in reply to Nested OR as a control structure

Thanks for all your replies.
That's very thorough little test harness there Browser, nice. I think your going to beat me when you see that the nub of the question was just all about return values. This finally works
#!/usr/bin/perl dofistcritical() or dobackupcritical() or dofailed(); sub dofistcritical {if (int rand 5) {print "hooray it worked first time!\n"} else {return 0}} sub dobackupcritical {if (int rand 5) {print "First time failed but luckily the backup worked...phew\n"} else {return 0}} sub dofailed {if (int rand 5) {print "Main failed. Backup Failed. You have 3 minutes to reach a +safe distance\n"} else {return 0}}
I'm not exactly sure where it was failing before, but the complicated blocks to force critical and non-critical areas must have had me seeing things, from here I can work the critical/non-critical sections back in.
Cheers all.