diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1999-02-12 12:40:17 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1999-02-12 12:40:17 +0000 |
commit | bf4b1e527fdf3e0133164c452edf2a3c4cdc8b41 (patch) | |
tree | 7ab975037fcd65d70d1d7c6b486996741e01b2e3 /t/op/lop.t | |
parent | ac5c734f32ccd9787762253192de0d559609abae (diff) | |
download | perl-bf4b1e527fdf3e0133164c452edf2a3c4cdc8b41.tar.gz |
allow boolean assign ops to be lvalues
From: Stephen McCamant <smccam@uclink4.berkeley.edu>
Date: Mon, 11 Jan 1999 16:52:18 -0600 (CST)
Message-ID: <13978.32609.495338.544643@alias-2.pr.mcs.net>
--
From: Hugo van der Sanden <hv@crypt.compulink.co.uk>
Date: Mon, 18 Jan 1999 10:04:00 +0000
Message-Id: <199901181004.KAA17471@crypt.compulink.co.uk>
Subject: Re: [inconsistency 5.005_54] ||= not an lvalue
p4raw-id: //depot/perl@2901
Diffstat (limited to 't/op/lop.t')
-rwxr-xr-x | t/op/lop.t | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/t/op/lop.t b/t/op/lop.t new file mode 100755 index 0000000000..f15201ff09 --- /dev/null +++ b/t/op/lop.t @@ -0,0 +1,44 @@ +#!./perl + +# +# test the logical operators '&&', '||', '!', 'and', 'or', 'not' +# + +BEGIN { + chdir 't' if -d 't'; + unshift @INC, '../lib'; +} + +print "1..7\n"; + +my $test = 0; +for my $i (undef, 0 .. 2, "", "0 but true") { + my $true = 1; + my $false = 0; + for my $j (undef, 0 .. 2, "", "0 but true") { + $true &&= !( + ((!$i || !$j) != !($i && $j)) + or (!($i || $j) != (!$i && !$j)) + or (!!($i || $j) != !(!$i && !$j)) + or (!(!$i || !$j) != !!($i && $j)) + ); + $false ||= ( + ((!$i || !$j) == !!($i && $j)) + and (!!($i || $j) == (!$i && !$j)) + and ((!$i || $j) == ($i && !$j)) + and (($i || !$j) != (!$i && $j)) + ); + } + if (not $true) { + print "not "; + } elsif ($false) { + print "not "; + } + print "ok ", ++$test, "\n"; +} + +# $test == 6 +my $i = 0; +(($i ||= 1) &&= 3) += 4; +print "not " unless $i == 7; +print "ok ", ++$test, "\n"; |