Fun indeed!
Interesting philosophy. Undefined but consistent is oxymoronic, if its consistent (not just constrained)
then its defined. The subtlety is that we _really_ mean not defined across platforms and
implementations. The platform, processor architecture, C compiler used and a host of other
things add variables (that may as well be random) into the equation that defines the
statements behaviour.
I applaud the determination and curiosity of the OP, its a fascinating tale,
and only misguided in retrospect of knowing that Perl itself does not know the answer. If nothing else
a great amount is learned about Perls treatment of variables. On another note I see no reason for
Perl to maintain this. A language is what you DEFINE it to be. Perhaps Perl 6 will be bold enough to say
'this is the order of evaluation, this is the behaviour, anything else is wrong' and have done with it.
IANA compiler writer btw, dragon books scare me, maybe I'm missing a really good reason, but in my mind
its just a question of definition and sticking to it. On another note, Barrachois approach is typical empirical
programming, good stuff, tweak it and see, try and break it and find out how it works. If you never encountered
a problem like that before you wouldn't know what 'Behaviour is undefined' even means in the documentation.
-
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.
|