The problem is with local and lexical $_
Example:
use 5.010;
sub my_sub (&) {
my $code = shift;
local $_ = '1234';
$code->();
}
my_sub { say };
given ("test") {
when ("test") {
my_sub { say };
}
}
Output:
1234
test
Why? Because my $_ (lexical - from the given/when blocks ($_ = 'test')) has a higher priority (aka is in the block where you are) than the local $_ (local - from the my_sub ($_ = '1234')
How to fix this?
use 5.010;
sub my_sub (&) {
my $code = shift;
local $_ = '1234';
$code->();
}
my_sub { say };
sub my_sub2 {
my_sub { say };
}
given ("test") {
when ("test") {
my_sub2();
}
}
|