On Mon, Aug 13, 2001 at 05:50:14PM -0400, David Rankin wrote:

> #!/usr/bin/perl -w
> use strict;
> my $num=3;
> my $nextnum;
> $num==3 ? $nextnum=4 : $nextnum="unknown" ;
> print $nextnum;
> 
> It prints "unknown".  I'd expect it to print "4" because $num==3 would 
> evaluate to true.

You're being hit by precedence.

$ perl -MO=Deparse,-p -e '$num==3 ? $nextnum=4 : $nextnum="unknown"'
((($num == 3) ? ($nextnum = 4) : $nextnum) = 'unknown');

But if you are assigning to the same variable in both branches, you're
better off writing like this:

  $nextnum = $num == 3 ? 4 : "unknown";

$ perl -MO=Deparse,-p -e '$nextnum = $num == 3 ? 4 : "unknown"'
($nextnum = (($num == 3) ? 4 : 'unknown'));

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to