2013-08-15T12:09:06
eyekona[...]
Auch bei dir gibt es Sachen die ich so noch nicht gesehen habe. - Gleich probieren. :-) say for z.B.
[...]
Die Syntax
mach_was for (bedingung) ist eine Kurzschreibweise für
for (bedingung) { mach_was }. In Verbindung mit der impliziten Variablen
$_ kann das, wie in diesem Fall, als nützliche Kurzschreibweise dienen. Außer
for kann man auch
while,
if und
unless analog benutzen.
Quote[...]
was macht use 5.012; ? Legt das die Versionsnummer von Perl fest?
Das wäre aber kontraproduktiv, da nach einem Update kein Script mehr geht, oder?
[...]
Es legt die
Mindestversionsnummer fest und weist neuere Perlversionen an, sich möglichst kompatibel zu dieser spezifischen Version zu verhalten. Das verbessert also eher die Vorwärtskompatibilität.
use 5.012, also den "Perl 5.12 Modus", verwende ich gerne für Codeschnipsel, weil damit die neueren Befehle wie
say aus Perl 5.10 freigeschaltet werden und gleichzeitig
use strict aktiviert wird.
Quote[...]
muss ich nur noch nachgucken, was map tut :-)
[...]
map ist eine klassische Funktion höherer Ordnung: Sie bekommt eine Subroutine oder einen Codeblock und eine Liste von Werten vorgesetzt, wendet den gegebenen Code auf jeden der Werte an und sammelt die Resultate in einer neuen Liste, die sie zurückgibt.
Ich verwende
map in meinem Beispiel so, dass der Codeblock für manche Elemente eine leere Liste zurückliefert, so dass für diese Elemente nichts in der Ausgabeliste von
map landet. Dadurch spare ich mir eine zusätzliche Anwendung von
grep um die Liste zu filtern.
Da ich aus der Ecke der funktionalen Programmierer komme, werfe ich gerne mit
map,
grep,
List::Util::reduce und dergleichen um mich ;-)
When C++ is your hammer, every problem looks like your thumb.