Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^8: (Mis)Understanding "works"

by Marshall (Canon)
on Feb 26, 2009 at 21:47 UTC ( [id://746679]=note: print w/replies, xml ) Need Help??


in reply to Re^7: (Mis)Understanding "works"
in thread (Mis)Understanding grep...eq $_

Grep can be used in very complex ways. I'm posting yet another example of how to use grep{} on complex structures. A grep within a grep is just fine as above post shows, but it is also possible to use map{} within a grep.

Basically when you are thinking about filtering something out, think about grep. Map{} is used to change or transform something and often folks get these ideas confused. Also many folks think that Perl grep is like Unix grep with regex'es. Perl grep is WAY more powerful! The code below operates on a list of matrices and deletes those which have fewer than some minimum number of total elements.

#!/usr/bin/perl -w use strict; use Data::Dumper; my $min_elements = 11; my $rLoLoL =[ [ [78,43,87], [64,73,72], [99], [65,67,71] ], [ [1,2,3], [4,5], [6,7],[8, 9, 10, 11] ], ]; @$rLoLoL = grep { (my @elements = map{@$_}@$_)>= $min_elements }@$rLoLoL; #some explanation ...most folks posting in this thread have #thousands of posts and are experienced..but perhaps this will #help others...although most folks don't go down this deep #into the thread... #the @$rLoLoL gets the list of references to matrices, the #list of lists of lists (LoLoL). # in: ...map{@$_}@$_), this last @$_ gets List of List's # the map{} takes each one of these and "flattens the matrix # out", what goes into @elements is like (78,43,87,64,73,72,99,65,67,7 +1). # print Dumper ($rLoLoL); #the first "matrix" with 10 total elements has been removed... __END__ Prints: $VAR1 = [ [ [ 1, 2, 3 ], [ 4, 5 ], [ 6, 7 ], [ 8, 9, 10, 11 ] ] ];

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://746679]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (1)
As of 2024-04-25 00:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found