in reply to Re^2: Get even postion elements in an array
in thread Get even postion elements in an array

I prefer reusable idioms.

Here not is indeed more readable, but it won't produce 0 for false, which could be counterintuitive in other cases.

$flipflop needs to be declared, while $a (and $b) is already global as part of the sort idiom, which is a similar case of using a code block.

$a=1; my @result = grep { $a = not $a }, @input;

At the end it's a matter of taste. ^= is shorter, = not is clearer, but =1- can equally be used in most other languages, making it an universally understood idiom.

Cheers Rolf

Replies are listed 'Best First'.
Re^4: Get even postion elements in an array
by anonymized user 468275 (Curate) on Nov 16, 2010 at 16:22 UTC
    Reusable idioms are an open block to your thinking. They are not the same as reusable code. '' is just as false as 0 and is often preferable -- for example, a routine returns or sets a scalar by reference originating from a unix exit code, 0 being unix success, so '' is the best value for "i had to abort earlier than that" $a is not a global, it's a special variable for use in sort blocks, that shouldn't be abused especially by habit -- one day a sort routine will come back to bite you in the bottom. Are you trying to say that not declaring locally and instead using global variables is a virtue? Many here will disagree.

    One world, one people