Thank you. That is all find and dandy now. But what about the print line:
I am trying to print the newest value in the array.
$questionpos[$questionno][$#{$questionpos[$questionno]}]
-----Original Message-----
From: Peter Scott [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, June 05, 2002 2:02 PM
To: Balint, Jess
Cc: begin
Subject: Re: Multi-Dimensional Array and push()
At 01:19 PM 6/5/02 -0400, you wrote:
>Hello all. I have trying to push a value onto the end of a two-dimension
>array. Here is my code.
>
> if( /\s+--\s+COLS\.\s+(\d+)\s+-\s+(\d+)\s+--/ ) {
> push( @{questionpos[$questionno]}, $1 );
Nope, Perl thinks you're trying to make an array slice. Close though.
> push @questionlength[$questionno], ( $2 -
$1
>+ 1 );
> } elsif( /\s+--COL\.\s+(\d+)\s+--/ ) {
> push @questionpos[$questionno], $1;
> push @questionlength[$questionno], 1;
Nope, Perl thinks that's an array slice with one element in it (and hence
warns).
> }
> print "Match column definition
>\@$questionpos[$questionno][$#questionpos[$questionno]]\n" if( $d == 1 );
>
>I tried a couple different things, but it wouldn't work right. How do I
push
>these values? Thanks.
Two rules to remember for dereferencing:
(1) You can replace the identifier portion (the "foo" in "@foo") of any
expression with a simple scalar ($foo) that is a reference to the
appropriate thing.
(2) You can replace the identifier with a block evaluating to a reference
to the appropriate thing.
(Well, there's also the arrow operator, but that doesn't concern us here.)
You would be doing "push (@foo, $value)" if you were pushing onto an
ordinary array @foo. But you don't have an ordinary array; you have a
reference to it which is stored in $questionpos[$questionno]. That's not a
simple scalar, therefore you have to exercise rule 2 and hence:
push ( @{$questionpos[$questionno]}, $value )
--
Peter Scott
Pacific Systems Design Technologies Boston Perl Classes in July:
http://www.perldebugged.com/ http://stemsystems.com/class/
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]