sub create_f { my $func = shift; return sub { my $var = "xpto"; $func->( $var ); } } my $function = create_f( sub { print ">> $_[0] <<\n" } ); $function->();