l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
November 4: Social gathering
Next Installfest:
TBD
Latest News:
Oct. 24: LUGOD election season has begun!
Page last updated:
2003 May 08 13:25

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] perl question - arrays and lists
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] perl question - arrays and lists



On Thu, May 08, 2003 at 01:12:43PM -0700, Peter Jay Salzman wrote:
> there's some code i wrote that does something like:
> 
> sub blah()
> {
>    foreach (@foobar)
>    {
>       push @array, ($foo, $bar);
>    }
>    
>    return @array;
> }
> 
> so i'm returning an array whose elements are each a list of two items.

Actually, you're not. The documentation for "push" says: 

Treats ARRAY as a stack, and pushes the values of LIST onto the end of
ARRAY.  The length of ARRAY increases by the length of LIST.

The above code is equivalent to:

foreach(@foobar)
{ 
    push @array, $foo; 
    push @array, $bar; 
}


> the receiving code is something like:
> 
>    my @barfoo = blah();
> 
> what i've found is that @barfoo is no longer an array of lists.  the
> lists appear to be "flattened out".
> 
> so in the previous example, if there's one element of @foobar and $foo
> is "hello" and $bar is "dolly", then what i see is:
> 
>    $barfoo[0] is "hello";
>    $barfoo[1] is "dolly";
> 
> when what i really want is;
> 
>    $barfoo[0] = ("hello", "dolly");
> 
> i know that arrays can hold lists, but i must not be doing it correctly.
> do i need to do this with references?

Yep. Try push @array, [$foo, $bar]. 

-- 
Samuel Merritt
OpenPGP key is at http://meat.andcheese.org/~spam/spam_at_andcheese_dot_org.asc
Information about PGP can be found at http://www.mindspring.com/~aegreene/pgp/

Attachment: pgp00013.pgp
Description: PGP signature



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
O'Reilly and Associates
For numerous book donations.