in reply to Re^2: Removing overloaded string operator
in thread Removing overloaded string operator

Actually, when you look at it it isn't that surprising. Most likely the function overload::StrVal doesn't have a prototype. Therefore when you call it like that Perl parses it as a list operator (Update: The anonymous reply below is correct - the type of operator doesn't matter). That is to say, it is equivalent to
print overload::StrVal($froob . "");
In other words, its taking the string value of $froob (which happens to be the return value of an overloaded stringification), appending a blank to it, and then calling StrVal, which does nothing since its argument is an ordinary string.

Replies are listed 'Best First'.
Re^4: Removing overloaded string operator
by Anonymous Monk on Feb 02, 2005 at 09:56 UTC
    The prototype doesn't matter. The concatenation operator has a higher precedence than both list operators (most function calls), and named unary operators (function calls with the $ or ;$ prototypes).