Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

print one row of array

by Anonymous Monk
on Jun 09, 2004 at 23:19 UTC ( [id://362931]=perlquestion: print w/replies, xml ) 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
    see perldata for more info.
      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 (Bishop) 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.

      To bad I can't ++ your reply twice, Fletch!

      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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://362931]
Front-paged by JSchmitz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (7)
As of 2024-04-23 09:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found