<div dir="ltr"><div class="gmail_extra">Ah yes - precedence :)</div><div class="gmail_extra"><br></div><div class="gmail_extra">And thanks for the deparse trick, it looks like a true time saver.<br><br><div class="gmail_quote">
On 24 April 2012 15:05, Gabor Szabo <span dir="ltr">&lt;<a href="mailto:gabor@szabgab.com" target="_blank">gabor@szabgab.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Tue, Apr 24, 2012 at 2:54 PM, ynon perek &lt;<a href="mailto:ynonperek@gmail.com">ynonperek@gmail.com</a>&gt; wrote:<br>
</div><div><div class="h5">&gt; Hi Everyone,<br>
&gt; I was bitten today by this snippet that I still can&#39;t understand (second<br>
&gt; test fails):<br>
&gt;<br>
&gt; use v5.14;<br>
&gt; use Test::More;<br>
&gt;<br>
&gt; my @l = qw/red blue green/;<br>
&gt;<br>
&gt; my $has_red_1 =   grep /red/, @l;<br>
&gt; my $has_red_2 = ( grep /red/, @l ? 1 : 0 );<br>
&gt;<br>
&gt; is ( $has_red_1, 1, &quot;Expected&quot; );<br>
&gt; is ( $has_red_2, 1, &quot;This one fails - Why ?&quot; );<br>
&gt;<br>
&gt; done_testing;<br>
&gt;<br>
&gt; I know that grep does nothing in void context, but here I have a valid<br>
&gt; boolean context - what&#39;s going on ?<br>
<br>
</div></div>save the script in <a href="http://a.pl" target="_blank">a.pl</a> then run:<br>
<br>
perl -MO=Deparse,-p <a href="http://a.pl" target="_blank">a.pl</a><br>
<br>
<br>
sub BEGIN {<br>
    require(v5.14);<br>
}<br>
use Test::More;<br>
use strict &#39;refs&#39;;<br>
BEGIN {<br>
    $^H{&#39;feature_unicode&#39;} = q(1);<br>
    $^H{&#39;feature_say&#39;} = q(1);<br>
    $^H{&#39;feature_state&#39;} = q(1);<br>
    $^H{&#39;feature_switch&#39;} = q(1);<br>
}<br>
(my(@l) = (&#39;red&#39;, &#39;blue&#39;, &#39;green&#39;));<br>
(my $has_red_1 = grep(/red/, @l));<br>
(my $has_red_2 = grep(/red/, (@l ? 1 : 0)));<br>
is($has_red_1, 1, &#39;Expected&#39;);<br>
is($has_red_2, 1, &#39;This one fails - Why ?&#39;);<br>
done_testing();<br>
<a href="http://a.pl" target="_blank">a.pl</a> syntax OK<br>
<br>
<br>