in reply to Re^2: Stupidest Prime Number detector ever!!
in thread Stupidest Prime Number detector ever!!

my @odds = map { $_ % 2 != 0 } @array;

That's not going to do what you think. Consider the following:-

johngg@abouriou:~$ perl -Mstrict -Mwarnings -E ' say for map { $_ % 2 != 0 } 0 .. 10;' 1 1 1 1 1

The alternating blanks and ones are registering the FALSE and TRUE results of the expression in the map, which essentially has a one to one relation between input on the right and output on the left. What you should be using instead is grep which filters input, only passing to the left those items for which the expression is TRUE.

johngg@abouriou:~$ perl -Mstrict -Mwarnings -E ' say for grep { $_ % 2 != 0 } 0 .. 10;' 1 3 5 7 9

Note also that you could dispense with the != 0 as the expression $_ % 2 will evaluate to either 0 or 1.

johngg@abouriou:~$ perl -Mstrict -Mwarnings -E ' say for grep { $_ % 2 } 0 .. 10;' 1 3 5 7 9

I hope this is helpful.

Cheers,

JohnGG

Replies are listed 'Best First'.
Re^4: Stupidest Prime Number detector ever!!
by Anonymous Monk on Jun 23, 2021 at 22:06 UTC

    Yikes!!!

    I meant  grep and not  map. Truly my bad!!