I get what you're saying, but I still disagree. It may be an optimization quirk, but it's also still a bug.

The extended assignment operators are there to provide a syntax shortcut, and yes, to provide the compiler with additional information it can use to optimize the implementation. However, you can't redefine changes in behavior as simple "wiggle room". There is no, this will equal either 0 or 1. This is programming, it needs to have defined behavior.

$ perl -e '$a{0} = scalar keys %a; print $a{0}' 0 $ perl -e '$a{0} = $a{0} || scalar keys %a; print $a{0}' 0 $ perl -e '$a{0} ||= scalar keys %a; print $a{0}' 1 $ perl -e '$a{0} = $t ||= scalar keys %a; print $a{0}' 0

Yes, it's an edge case. Yes, it's an edge case that is an acceptable variance in behavior for me at least. But that variance in behavior is still a bug (in my opinion ...).


In reply to Re^9: Without trying; what do you think this would print? (notabug!) by wind
in thread Without trying; what do you think this would print? by lkundrak

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.