This style of putting subroutine definitions below the main body of code is explored at
where do you put your subs with many arguments going either way. In terms of not being bitten it's saner to put subs at the top of your code, but if you're happy to get into the habit of putting the main body of code in bare blocks, then it's no longer an issue (unless, of course, you want to use bareword sub calls). Another method is to have the main body of code in a subroutine and just have a call to that with
@ARGV and
exit e.g
exit main(@ARGV);
sub main { ... }
For which
tye listed four good reasons for using that style at
Re^2: END failed --- call queue aborted (or was it three ...).
HTH
_________
broquaint