hi,
nutze die Möglichkeiten die Perl5 bezüglich dyn. Scope bietet:
use strict;
use warnings;
local $, = "\n";
sub multipli{
my $x = shift;
sub{
my $y = shift;
$x * $y;
}
}
# CODE Ref in our Scope
# es wird nur eine Ref benötigt
our $m = multipli(3);
print $m->(11), "\n"; # 33
# dynamischer Scope in Block
{
local $m = multipli(5);
print $m->(7), "\n"; # 35
}
# $m ist unverändert
print $m->(11), "\n"; # 33
So genügt es, mur eine Referenz im Scope our
anzulegen. Nachdem der Block {} verlassen wurde, hat $m wieder seinen ursprünglichen Wert was mit local $m
erreicht wurde.
MfG