Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

print one row of array

by Anonymous Monk
on Jun 09, 2004 at 23:19 UTC ( #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"; }
      d e f
      If you need something more general, speak up.

      Quantum Mechanics: The dreams stuff is made of

Re: print one row of array
by NetWallah (Abbot) 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.

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


      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)

    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,

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://362931]
Front-paged by JSchmitz
[Corion]: And the second rule that I've learned is, that there is no one-off job, so writing a program for it pays off almost immediately. The third rule is to give all my programs numbers and have them reproduce that number in the name of their output files. :)
[Discipulus]: the true part is that also specification change between years.. but well our job is cheap but dont abuse of us.. ;=)
[LanX]: Choroba: do you miss chaos with ties? apply at the US government.. ;)
[ambrus]: Corion: those are good rules.
[ambrus]: Discipulus: oh sure. the input data has different filenames every time I get them.
[ambrus]: the directory structure may be 1, 2, or 3 deep, it may have spaces in the filename or not, it has dates in various format, different keywords for the same meanings, and the dates and other keywords are assembled in various ways.
[Discipulus]: no ambrus by specification i mean for example license per core instead of per socket, so fields are different

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (14)
As of 2017-03-29 12:12 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (350 votes). Check out past polls.