On 29/04/2010 17.56, marcos rebelo wrote:

the code:

use v5.10;
use Modern::Perl;
use List::MoreUtils qw(any);

say( (any { $_ eq 7 } (0..10) ) or 'false' );

given (5) {
     when (5) {
         say( (any { $_ eq 7 } (0..10) ) or 'false' );
         say( join(", ", map { $_ eq 7 } (0..10) ) );
     }
}


prints:

1
false
, , , , , , , 1, , ,



the second 'any' should have returned a true value or not, and why???

The diagnosis given by Flavio (Poletti from mong...@perl.it) is correct, so just declare "our $_" to restore the global $_:

given (5) {
    when (5) {
        say( any { our $_ eq 7 } 0..10 or 'false' );
        say( join ', ', map { $_ eq 7 } 0..10 );
    }
}

prints:

1
, , , , , , , 1, , ,

as expected.

Not that clear but, given the perlsyn fragment pointed out by Flavio, it works as advertised.

Ciao
-Emanuele

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to