On Thu, 27 Sep 2001 09:30:19 -0700 (PDT), Tejasvini Prasad wrote:

>This code does not work correctly, but when I add a
>"my" before @temp it works fine. I understand that
>"my" declares a local variable....but I don't
>understand how this will affect the way values are
>assigned in my array. Any ideas?

Oops! Sorry for ignoring your main question.

If you don't declare the variable INSIDE THE LOOP, \@temp will be the
same reference every time you use it. So if you do

        @temp = ();
        push @ar, \@temp;

you eventually just get an array of all the same reference to the same
other array. 

        {  # loop body
            my @temp;
            push @ar, \@temp;
        }

creates a new array with a new reference, every time.

Note that if you move the declaration of @temp outside the loop, the
problem comes back. So it's not a "global vs. lexical" thing.

-- 
        Bart.

Reply via email to