Wie würde ich eine Funktion schreiben, die so etwas wie die Kartenfunktion akzeptiert?Wie kann ich eine Funktion an ein Perl Sub übergeben?
Beispiel:
$func = sub { print $_[0], "hi\n" };
&something($f);
sub something
{
my $func = shift;
for ($i = 0; $i < 5; $i++)
{ $func->($i); }
}
gut funktioniert.
aber dann, wenn ich tat
&something({ print $_[0], "hi\n" });
es wird nicht funktionieren und sagt func eine undefinierte Referenz.
Also meine Frage wäre, wie würde ich eine Funktion schreiben, die Parameter wie Perls Kartenfunktion akzeptiert?
map { s/a/b/g } @somelist;
+1. Ich mag die Idee, $ _ mit der "for" -Anweisung zu lokalisieren - erlaubt 1-arg funcrefs, nett und prägnant zu sein. (Und ich nehme an, Sie könnten "local ($ a, $ b);" für 2-arg funcrefs a la sort().) –