#!/usr/bin/perl use strict; use helper; #... open(MYFILE, 'testcases.txt'); @HELPER::testCaseStack = ; close(MYFILE); foreach my $testCase (@testCaseStack) { undef %TESTCASE::; ##(1)## my $result = do($testCase); ##(2)## # do sth. with the result here next; EXIT_TESTCASE: ##(3)## # do sth. here next; EXIT_TESTRUNNER: ##(3)## # do sth. here last; } #### #!/usr/bin/perl package HELPER; our @testCaseStack = (); our $executedTestProcedures = 0; sub handleResult($) { my ($result) = @_; # do some default outputs... $executedTestProcedures++; leaveTestRunner() if ($result>2); leaveTestCase() if ($result>1); } sub leaveTestcase { goto EXIT_TESTCASE; ##(3)## } sub leaveTestRunner { goto EXIT_TESTCASE; ##(3)## } 1; #### #!/usr/bin/perl -w package TESTCASE; ##(1)## use HELPER; # test procedure 1 handleResult(0); # test procedure 2 handleResult(1); push(@HELPER::testCaseStack, "anotherTest.pl"); # test procedure 3 handleResult(2); return 0;