The code block you give grep gets called once for every array element with $_ as an alias for the element. In this case the elements are references to the anonymous arrays, which can be accessed by using the dereferencing operator -> like shown above.use strict; use warnings; my @matrix = ( [48, 219, 11021], [72, 190, 11006], [203, 177, 11005], [301, 186, 11013], [309, 119, 11015], [309, 216, 11017], [309, 147, 11000], [343, 180, 10990], [346, 179, 10989], [451, 258, 11008], [838, 162, 11014] ); # e.g. filter out all sub-arrays with x <= 309: @matrix = grep { $_->[0] <= 309 } @matrix; local $, = " "; local $\ = "\n"; print @$_ for @matrix; __END__ Output is: 48 219 11021 72 190 11006 203 177 11005 301 186 11013 309 119 11015 309 216 11017 309 147 11000
PS: In Perl a two dimensional array, aka an array of arrays aka a matrix, uses always anonymous arrays inside. So you don't need to mentioned that explicitly with "an array of anonymous arrays".
In reply to Re: manipulating an array of anonymous arrays ...
by mscharrer
in thread manipulating a matrix
by chexmix
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |