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


in reply to Re: print one row of array
in thread print one row of array

By one definition, arrays in Perl are only one dimensional, so there is only one row (or column) to print.

For instance, examining a 2D array in the debugger gives:

DB<1> @x = ( [qw(a b c)], [qw(d e f)], [qw(g h i)]) DB<2> x @x 0 ARRAY(0x15d5240) 0 'a' 1 'b' 2 'c' 1 ARRAY(0x1cbe3f4) 0 'd' 1 'e' 2 'f' 2 ARRAY(0x1cbe430) 0 'g' 1 'h' 2 'i' DB<3>
This shows, for instance, that $x[0] is an array reference (ARRAY(0x15d5240)), and points to an array equivalent to qw(a b c).

To print a single row of a multidimensional array, you must first define which is the row index.

For the first index, this works:

my @x = ( [qw(a b c)], [qw(d e f)], [qw(g h i)]); my $row = 1; # print this row foreach my $col (0..$#{$x[$row]} ) { print "$x[$row][$col]\n"; }
prints
d e f
If you need something more general, speak up.

-QM
--
Quantum Mechanics: The dreams stuff is made of