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
see perldata for more info. | [reply] [d/l] |
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
| [reply] [d/l] [select] |
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.
| [reply] [d/l] |
No, such knowledge was sadly lost in the destruction of Atlantis. All you can do now is print just one column.
| [reply] |
| [reply] |
| [reply] |
| [reply] |
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
| [reply] [d/l] [select] |