#!/usr/bin/perl -w use strict; my $code = q{ open( my $fh, '<', 'foo.txt' ) or die("open failed: $!") }; my $sub = sub { eval($code) or die("error in eval(): $@"); }; $sub->(); #### #!/usr/bin/perl -w use strict; my $code = q{ open( my $fh, '<', 'foo.txt' ) or die("open failed: $!") }; my $sub = sub { eval($code) or die("error in eval(): $@"); }; my $sub_name = 'do_this'; { no warnings 'once'; no strict qw(refs vars); $$sub_name = $sub; $do_this->(); }