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