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:
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
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 { 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
(Of course, it would be nice to have a "code not reachable" message, but that's life.)
Give a man a fish: <%-{-{-{-<
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|