print (1 ? 1 : 0) . 'x'
jns at gellyfish.com
Thu May 11 11:59:05 BST 2006
On Thu, 2006-05-11 at 10:59, O'Shaughnessy, Jamie wrote:
> print (1 ? 1 : 0) . 'x';
> What do you expect this would print?
> I expected the output would be "1x" - the ?: evaluates to 1, the ()s are needed because . Is higher precedence than ?: so you end up with 1 . 'x' as the parameter to print - hence print "1x".
> However it doesn't, it just prints "1".
> Can anyone explain what is happening here?
As well as the switching on of warnings that everyone else is
advocating, light can sometimes be shone on confusing behaviour by using
[jonathan at orpheus jonathan]$ perl -MO=Deparse
print (1 ? 1 : 0) . 'x';
print(1) . 'x';
> Changing the code to:
> print (1 ? 1 : 0), 'x';
> Also does the same, yet:
> Print 1 ? 1 : 0, 'x';
> Does print out "1x".
> Also, taking the original code and assigning it to a variable:
> my $x = (1 ? 1 : 0) . 'x';
> print $x;
> Also prints out "1x"
This e-mail is sponsored by http://www.integration-house.com/
More information about the london.pm