I think B::Deparse gets it wrong -- as it sometimes does -- when you add -p:
My theory: When Deparse tries to add parens wherever it can, it treats the first two as a function call (which was my first guess too). But as tobyink correctly surmised, that first two is treated by print as a filehandle.
This is confirmed by the more low-level output of B::Concise:
| [reply] [d/l] [select] |
| [reply] [d/l] [select] |
| [reply] |
I can't test ATM You gotta stop saying that :)
Contrary to AnoMonk I doubt space matters. Sure it does, it matters how Deparse places the space, because it matters to perl $ perl -w
print(two (('two' == 'five') ? 'true' : 'false'));
Unquoted string "two" may clash with future reserved word at - line 1.
^Z
Name "main::two" used only once: possible typo at - line 1.
Argument "five" isn't numeric in numeric eq (==) at - line 1.
Argument "two" isn't numeric in numeric eq (==) at - line 1.
print() on unopened filehandle two at - line 1.
That is exactly as deparsed with -p, behaves exactly like the original
| [reply] [d/l] |