use strict; use warnings; use vars qw($hash $var1 $var2); my $file = shift or die "No file given\n"; open my $in, '<', $file or die "input $file: $!\n"; eval do { local $/ = undef; <$in>; }; $var1 = 'foo'; print "var1 = $var1\n"; $hash->{subs}[1]->(); print "var1 = $var1\n";