We can clearly see 'undef' is being passed and that's what's throwing off your conditional. This is so counter-intuitive that I assume I'm missing something, though a quick scan through the docs doesn't reveal what that would be.
The relevant part of the documentation is:
Calling Conventions for Binary Operations The functions specified in the "use overload ..." direc­ tive are called with three (in one particular case with four, see "Last Resort") arguments. If the corresponding operation is binary, then the first two arguments are the two arguments of the operation. However, due to general object calling conventions, the first argument should always be an object in the package, so in the situation of "7+$a", the order of the arguments is interchanged. It probably does not matter when implementing the addition method, but whether the arguments are reversed is vital to the subtraction method. The method can query this infor­ mation by examining the third argument, which can take three different values: FALSE the order of arguments is as in the current opera­ tion. TRUE the arguments are reversed. "undef" the current operation is an assignment variant (as in "$a+=7"), but the usual function is called instead. This additional information can be used to generate some optimizations. Compare "Calling Conventions for Mutators".
The first argument is the object, no surprise here. Since the stringify operation is a unary operation, the second argument is undefined. The third argument is the empty string, which is false, but defined. And this fits the description of the documentation - the arguments aren't reversed, nor is the operation an assignment variant.

Abigail


In reply to Re: Overloading oddity by Abigail-II
in thread Overloading oddity by theguvnor

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.