I usually just grep through arrays, but recently I was not looking for an array-element, but for the index of an array-element, so I tried this:
I would have expected an output of "<0> <1> <>" (as the index where the value is 1 is 0, the index where the value is 2 is 1 and there is no index with a value of 3), but instead I get "<1> <1> <0>".use strict; my @array=(1,2); my $i1 = grep { $array[$_] == 1 } (0..$#array); my $i2 = grep { $array[$_] == 2 } (0..$#array); my $i3 = grep { $array[$_] == 3 } (0..$#array); print "<$i1> <$i2> <i3>\n";
Why is that?
In reply to grep surprise by morgon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |