my @positive_indices = grep { $arr[$_] > 0 } 0 .. $#arr; my @negative_indices = grep { $arr[$_] < 0 } 0 .. $#arr; #### my @positive_indices = map { $arr[$_] > 0 ? $_ : () } 0 .. $#arr; my @negative_indices = map { $arr[$_] < 0 ? $_ : () } 0 .. $#arr; #### my @positive_indices; my @negative_indices; for (0 .. $#arr) { push @positive_indices, $_ if $arr[$_] > 0; push @negative_indices, $_ if $arr[$_] > 0; }