Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re^4: filtering an array

by prbndr (Acolyte)
on Sep 01, 2012 at 22:48 UTC ( #991208=note: print w/replies, xml ) Need Help??

in reply to Re^3: filtering an array
in thread filtering an array

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;}

Replies are listed 'Best First'.
Re^5: filtering an array
by philiprbrenan (Monk) on Sep 01, 2012 at 23:03 UTC

    Likewise, the for is unnecessary in this code too:

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

    It should just be:

    @positions = map $_->[0], @positions;

    because map iterates over the array you give it. Even better, you could write:

    $_ = $_->[0] for @positions;

    here we are making the for implicit in map explicit.

      perl still has a problem with this:

      @positions = grep $_->[1] =~ /ac/i, @positions;

      with the same error Use of uninitialized value in pattern match (m//)

        One or more of the elements of the array @positions is undefined. The easiest way to check this is like this:

        use Data::Dump qw(pp); pp([@positions]);

        This will give you a printout of the value of each element in array @positions. I expect we will see that some are "undef" meaning undefined. It will be these elements that are causing the problem.

Re^5: filtering an array
by philiprbrenan (Monk) on Sep 01, 2012 at 22:59 UTC

    You do not need the for becuase grep loops over the array you give it. Please change:

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


    @positions = grep $_->[1] =~ /ac/i, @positions;
      right, but the error still persists. what here isn't defined?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://991208]
and the radiator hisses contentedly...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2018-04-20 11:23 GMT
Find Nodes?
    Voting Booth?