in reply to exit this way
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: <%-{-{-{-<
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: exit this way
by 1nickt (Canon) on Sep 01, 2015 at 02:32 UTC | |
by Anonymous Monk on Sep 01, 2015 at 05:54 UTC | |
by 1nickt (Canon) on Sep 01, 2015 at 07:11 UTC | |
|
Re^2: exit this way
by ExReg (Priest) on Sep 01, 2015 at 04:50 UTC |