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?