http://www.perlmonks.org?node_id=719581


in reply to Re^3: Lexical closures
in thread Lexical closures

The confusion is that Perl effectively closes over the value of the variable, not a reference to the variable.
sub make_funcs { my $val = shift; (sub {$val * $val}, sub {$val++}) } my($f3, $i3) = make_funcs(3); my($f5, $i5) = make_funcs(5); say $f3->(); say $f5->(); $i3->(); say $f3->(); say $f5->(); __END__ 9 25 16 25
I can't explain my results in combination with your claim.