package Foo; use warnings; use strict; use Exporter 'import'; our @EXPORT = qw/foo $FOO/; sub foo { print @_, "\n" } our $FOO = 'bar'; #### use warnings; use strict; use Foo; foo $FOO; #### use warnings; use strict; eval( rand() < 0.5 ? q{ sub foo { print "Hello!\n" } sub quz { print "Quz!\n" } } : q{ sub foo { print "Perl!\n" } sub baz { print "Baz!\n" } } ); foo(); # will it print "Hello!" or "Perl!" ? quz(); # will it die or won't it?