SPUG: Behavior of &&'ed functions
John W. Krahn
krahnj at telus.net
Wed Oct 27 16:07:11 CDT 2004
John Costello wrote:
> I have some code which boils down to the example shown below. I expected
> to see four lines of output, with $column incremented twice. Instead, the
> first print statement in each block does not output. Instead, the second
> and third lines are performed and apparently the first print outputs the
> boolean evaluation of &&'ed statements. Why does Perl (5.8.0) behave this
> way?
>
> Enlightenment appreciated.
>
>
> #!/localdepot/perl-5.80/bin/perl -w
> # test6.pl
> use strict;
>
> my ($column);
>
> $column = 0;
>
> print "column is: $column\n"
> && ++$column
> && print "now column is: $column\n";
>
> print "and column is: $column\n"
> && $column++
> && print "and now column is: $column\n";
>
>
>>./test6.pl
>
> now column is: 1
> 1and now column is: 2
> 1
To see what is happening use the B::Deparse module.
$ perl -MO=Deparse,-p -e'print "column is: $column\n" && ++$column && print
"now column is: $column\n";'
print((("column is: $column\n" && (++$column)) && print("now column is:
$column\n")));
-e syntax OK
John
--
use Perl;
program
fulfillment
More information about the spug-list
mailing list