sub lambda { my $f = $_[1]; for my $x ( $_[0] ) { return sub { return localize( $x, $_[0], $f ); } } } sub localize { my( $lexical, $val, $f )= @_; local( $_[0] )= $val; $f->(); }