Further to Your Mother's reply: Because Perl has no main() function and allows intermixing function calls and definitions, strange things can happen. Better by far, IMHO, to have someone put in a function call and scratch their head (even for quite a while) about why it is never executed than to have the code compile and apparently run correctly for hours/days/weeks/... before realizing that, hey, something ain't right! Here's an (admittedly rather contrived) example of goofy behavior:
Is that 43 result from the last call to T() correct? Maybe better not to make it at all:c:\@Work\Perl\monks>perl -wMstrict -le "S(3); T(); S(9); T(); ;; exit_here_to_avoid_weirdness(); ;; my $x = 42; sub S { $x = $_[0]; printf qq{in S: x == $x }; T(); } ;; sub T { ++$x; print qq{in T: x == $x}; } ;; sub exit_here_to_avoid_weirdness { ;;; } T(); " in S: x == 3 in T: x == 4 in T: x == 5 in S: x == 9 in T: x == 10 in T: x == 11 in T: x == 43
(Of course, it would be nice to have a "code not reachable" message, but that's life.)c:\@Work\Perl\monks>perl -wMstrict -le "S(3); T(); S(9); T(); ;; exit_here_to_avoid_weirdness(); ;; my $x = 42; sub S { $x = $_[0]; printf qq{in S: x == $x }; T(); } ;; sub T { ++$x; print qq{in T: x == $x}; } ;; sub exit_here_to_avoid_weirdness { exit; } T(); " in S: x == 3 in T: x == 4 in T: x == 5 in S: x == 9 in T: x == 10 in T: x == 11
Give a man a fish: <%-{-{-{-<
In reply to Re: exit this way
by AnomalousMonk
in thread exit this way
by ExReg
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |