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