in reply to Re: Re: Re: storing all type of vars
in thread storing all type of vars

Yes!!, your answer make me feel like a fool.

Using this to store a hash you have to store the reference, isn't it?:
%hash =(uno=>1, dos=>2); push @stack, \%hash; %hash=%{pop @stack};
With the stack module you don't have to care about this:
$stack -> push(%hash); %hash = $stack->pop();
Perhaps, slight difference to be worth.

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: storing all type of vars
by davorg (Chancellor) on Sep 11, 2001 at 16:13 UTC

    Didn't mean to make you feel foolish :)

    I think that storing references is actually far more flexible as references know what kind of variable they're references to.

    And because most Perl objects are implemented as references, you can even push objects onto your stack without too much extra work.

    This means you can do stuff like this:

    my @stack; push @stack, [ 1 .. 10 ]; # an array push @stack, { one => 1, two => 2 }; # a hash push @stack, 'a scalar'; push @stack, Some::Object->new; my ($scalar, @array, %hash, $obj); while (my $x = pop @stack) { if (my $type = ref $x) { if ($type eq 'ARRAY') { @array = @$x; } elsif ($type eq 'HASH') { %hash = %$x; } else { $obj = $x; } } else { $scalar = $x; } }
    --
    <http://www.dave.org.uk>

    Perl Training in the UK <http://www.iterative-software.com>