use Acme::ComeFrom; sub func { print "@_" }; func("start\n"); print "won't happen\n"; comefrom &func; print "branch 1\n"; exit; comefrom &func; print "branch 2\n"; label: print "won't happen either\n"; comefrom label; print "branch 2.1\n"; exit; comefrom label; print "branch 2.2\n"; expr0: print "to be\n"; exit; comefrom "expr".int(rand(2)); print "not to be\n";