From:                   Jeff 'japhy' Pinyan <[EMAIL PROTECTED]>

> On Feb 6, Brett W. McCoy said:
> 
> >On Wed, 6 Feb 2002, Carl Rogers wrote:
> >
> >> foreach(@array) {
> >>
> >>    if ($_ =~/somecondition/) {
> >>    # I want to do something to the element prior to $_ ($_ - 1)
> >>    }
> >> }
> >
> >The problem here is that $_ is a *copy* of the element in the array
> >-- modifying it does not modify the array (I think in earlier
> >versions it was actually an alias, which, I have read, led to all
> >sorts of abuse), so without some kind of a counter, you will not have
> >any knowledge of the previous value.
> 
> Err, no.  $_ is STILL an alias.
> 
>   my @words = qw( once upon a time );
>   length > 1 and $_ = ucfirst($_) for @words;
>   print "@words";  # Once Upon a Time
> 
> The problem will be storing the PREVIOUS element, which WILL be a
> copy, NOT an alias.

So let's store a reference ;-) Then we will not need the $is_first_iter 
variable :

        #!perl
        my @a = qw(a b c);
        my $last;
        foreach (@a) {
                $$last = 'XXX' if ($_ eq 'c' and defined $last);
                # ...
                $last = \$_;
        }

        print join(', ',@a);
        __END__


Jenda

=========== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==========
There is a reason for living. There must be. I've seen it somewhere.
It's just that in the mess on my table ... and in my brain.
I can't find it.
                                        --- me

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to