my @testsubs; ## test 1 push @testsubs, sub { return do { 1; 1; } }; ## test 2 push @testsubs, sub { if (1) { return do { 1; } } }; ## test 3 push @testsubs, sub { if (1) { return do { 1; 1; } } }; ## test 4 push @testsubs, sub { if (1) { return scalar do { 1; 1; } } }; for (1..@testsubs) { print "test $_ ", $testsubs[$_-1]->()==1 ? 'passes' : 'fails', "\n"; }