http://www.perlmonks.org?node_id=991192


in reply to filtering an array

push @positions, [ $read->end + 1, $base ];
i would like to remove every line of this array that contains a G or a T as the string
@positions = grep $_->[ 1 ] =~ /ac/i, @positions;
i would like to get rid of the strings altogether, so i just have an array with one column representing the number
@positions = map $_->[ 0 ], @positions;

Replies are listed 'Best First'.
Re^2: filtering an array
by prbndr (Acolyte) on Sep 01, 2012 at 22:30 UTC
    this code gives the warning: Use of uninitialized value in pattern match (m//). what exactly does this mean?

      You are using a variable in a pattern matching regular expression and said variable currently has no value. Please try assigning a value to the variable and see what happens. Thanks.

        i see. so if my array @positions is already defined and created, do i need to loop over all the values in @positions and then execute the code you posted?

        something like:

         for (@positions) {@positions = grep $_->[1] =~ /ac/i, @positions;}

        and then:

         for (@positions) {@positions = map $_->[0], @positions;}