sub create_f { my $func = shift; return sub { my $var = 'xpto'; $func->( $var ); } } my $f = create_f( sub { my $var = shift; print ">> $var <<\n"; } );