Problems? Is your data what you think it is? PerlMonks

### print one row of array

 on Jun 09, 2004 at 23:19 UTC Need Help??
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

is it possible to print just one row of an array?

Replies are listed 'Best First'.
Re: print one row of array
by thunders (Priest) on Jun 09, 2004 at 23:38 UTC
I'm confused by your termonology, but if by "one row" you mean a single entry, you need to use the subscript.
my @array = ("red","yellow","blue","green"); print \$array[0]; #prints red print \$array[1]; #prints yellow #and so on
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

Re: print one row of array
by NetWallah (Canon) on Jun 10, 2004 at 00:08 UTC
If you want to print one row of a multi-dimension array (AKA Array-of-arrays or AOA), you can do it thus:
my @AOA=([qw(Uno dos tres)],[4,5,6],[7,8,9]); print qq(@{\$AOA[1]}); ## OUTPUT ## 4 5 6

Offense, like beauty, is in the eye of the beholder, and a fantasy.
By guaranteeing freedom of expression, the First Amendment also guarantees offense.

Re: print one row of array
by Fletch (Chancellor) on Jun 09, 2004 at 23:25 UTC

No, such knowledge was sadly lost in the destruction of Atlantis. All you can do now is print just one column.

Atlantis too? I've heard that Noe's bark has been found with the halp of satelite photos too.

Paulster2

You're so sly, but so am I. - Quote from the movie Manhunter.
Re: print one row of array
by davidj (Priest) on Jun 10, 2004 at 00:07 UTC
Do you mean "print a single row of a two-dimensional array?
A single-dimensional array is pretty much a row: row 0. In that case

print @array;
would do it. A two-dimensional array in Perl is an array of array references. In that case the row needs to be dereferenced. The following are two ways it can be done.

use strict; my @a = (qw/a b c/); my @b = (qw/d e f/); my @c = (qw/g h i/); my @d = (\@a, \@b, \@c); print @{ @d[0] }; #print the first row (a b c)
Or

use strict; my @a = (qw/a b c/); my @b = (qw/d e f/); my @c = (qw/g h i/); my \$d = [\@a, \@b, \@c]; print @{ \$d->[1] }; # print the second row (d e f)

hope this helps,
--david

Create A New User
Node Status?
node history
Node Type: perlquestion [id://362931]
Front-paged by JSchmitz
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2018-01-21 17:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
How did you see in the new year?

Results (228 votes). Check out past polls.

Notices?