my $x = 1; my $f = sub { $x }; { my_local $x = 2; print $f->(), "\n"; # => 2 } print $f->(), "\n"; # => 1 #### sub lambda { my $f = $_[1]; for my $x ( $_[0] ) { return sub { local $x = $_[0]; return $f->(); } } }