Чтобы написать замыкание в Perl мы должны написатьПерл и затворы. Это возможно?
sub test {
my($x, $y, $z) = @_;
my $closure = sub{ $x + $y + $z };
}
Но иногда, если не всегда, то подпрограмма может иметь много строк, и я хотел бы взять определение подпрограмму за пределами и использовать что-то вроде этого
my $z;
sub test {
my($x, $y) = @_;
my $closure = closure('subname', $x, $y, $z);
}
sub subname : closure ($var1, $var2, $var3) {
$var1 + $var2 + $var3
}
Так что я могу повторно использовать это замыкание из других
my $on2;
sub test_xxx {
my($other_name1, $on3) = @_;
my $closure = closure('subname', $on3, $other_name1, $on2);
}
возможно ли это в Perl?
Такого рода вещи часто называют «фабрикой», и это то, что я пишу о совсем немного в [Intemediate Perl] (https://www.intermediateperl.com) и [Освоение Perl] (https://www.masteringperl.org). –