1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; my %test = ( foo => 'bar', ); my %code = ( code => sub { my ($ref) = @_; $test{foo} = $ref; }, ); print Dumper(\%test)."\n"; $code{code}->('bar2'); print Dumper(\%test)."\n";
QuoteIch dachte biancas Frage bezog sich auf %test und ...
Guest GastDu meinst sicher die Referenz auf die Sub ...
1
2
3
$ perl -Mstrict -E '{ my %foo = (test => 1); my $sub = \&test; $sub->() } sub test { print $foo{test} }'
Global symbol "%foo" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
1
2
$ perl -Mstrict -E '{ my %foo = (test => 1); sub test { print $foo{test} } } my $sub = \&test; $sub->()'
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
my %code; { my %test = ( foo => 'bar', ); %code = ( code => sub { my ($ref) = @_; $test{foo} = $ref; }, ); } # eigentlich endet hier der Scope für %test # der Aufruf funktioniert aber trotzdem $code{code}->('bar2');