hi,
Schauen wir uns einmal an, wie Julias Beispiel in Perl6 aussehen könnte:
sub f1($x) { return -> $y {$x * $y} } my &f5 = f1(5); &f5(7); # 35
Sieht furchtbar aus. In Perl 5 hingegen erklärt sich der Code von selbst:
use strict;
use warnings;
$, = " ";
sub f1{
my $x = shift;
sub{
my $y = shift;
$x * $y;
}
}
# CODE Referenzen speichern
my $f3 = f1(3);
my $f5 = f1(5);
# CODErefs ausführen
print $f3->(11), $f5->(7);
Scope inbegriffen. sub erzeugt eine Referenz auf den Code und die letzte Anweisung in einer sub ist immmer der return. Der Geltungsbereich lexikalischer Variablen wird mit my festgelegt und der ganze statische Scope heißt hier package main.
Codereferenzen werden über den -> Operator ausgeführt, Argumente in ().
MfG