Look at the way Deparse uses whitespace, its subtle
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.
That is not the way I read it :) Usually, Deparse doesn't add extraneous space to function calls, its always "foo( ... )" its never "foo ( ... )"
so the way I read that deparse output is as filehandle not function call
For example $ perl -MO=Deparse 2
sub two {
rand;
}
print two(two() == 'five' ? 'true' : 'false');
2 syntax OK
$ perl -MO=Deparse,-p 2
sub two {
(rand);
}
print(two(((two() == 'five') ? 'true' : 'false')));
2 syntax OK
When I look at Re^2: Tiny Perl puzzle I see print( filehandle ... );
| [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 That is exactly as deparsed with -p, behaves exactly like the original
| [reply] [d/l] |
> Sure it does, it matters how Deparse places the space, because it matters to perl
it depends! ;-)
update
ALSO:
BUT:
Cheers Rolf
(addicted to the Perl Programming Language)
| [reply] [d/l] [select] |