Use this to see what the precedence is (Gabor once sent this to me)

perl -MO=Deparse,-p prog.pl

So: 
while (! $line =~ /something/) {
}

while ( $line !~/something/) { 
}

while (! ($line =~/something/)) { 
} 

gets parsed as 


while (((!$line) =~ /something/)) {
    ();
}
while ((not ($line =~ /something/))) {
    ();
}
while ((not ($line =~ /something/))) {
    ();
}

And no, it isn't obvious that the first line is wrong. 

Peter

On Sun, 2010-06-27 at 15:10 +0300, Yossi Itzkovich wrote:
> Hi
> 
>  
> 
> We have a code that didn't work, it is something like:
> 
> While (! $line =~/something/)
> 
> { … }
> 
>  
> 
> It didn't work (I mean it never entered the code block).  We couldn't
> find the problem, so just as trying woodo we changed it into:
> 
>  
> 
> While ( $line !~/something/)
> 
> { … }
> 
>  
> 
> And now it works.  Then we change the original code into :
> 
> While (! ($line =~/something/))
> 
> { … }
> 
>  
> 
> And it works again.  What was the problem with the first version ?  
> 
>  
> 
> Yossi
> 
>  
> 
>  
> 
>  
> 
> 
> _______________________________________________
> Perl mailing list
> [email protected]
> http://mail.perl.org.il/mailman/listinfo/perl


_______________________________________________
Perl mailing list
[email protected]
http://mail.perl.org.il/mailman/listinfo/perl

Reply via email to