in reply to Re^2: Possible bug with array pointer
in thread Possible bug with array pointer
Hello jockel,
A standard idiom (see Re: Containing 'use lib' statements in modules to their own namespace) for removing (“breaking”) the alias is to assign the aliased variable to a lexical variable inside the loop:
use strict; use warnings; my $arrayref = ['A','_B','C']; for my $str (@$arrayref) { print "BEFORE: str = $str\n"; } for (@$arrayref) { my $str = $_; $str =~ s/^_//; print "INNER: str = $str\n"; } for my $str (@$arrayref) { print "AFTER: str = $str\n"; }
Output:
13:30 >perl 1738_SoPW.pl BEFORE: str = A BEFORE: str = _B BEFORE: str = C INNER: str = A INNER: str = B INNER: str = C AFTER: str = A AFTER: str = _B AFTER: str = C 13:30 >
BTW, an underscore character has no special meaning in a regex, so it doesn’t need to be escaped. Also, in the absence of an /m modifier, ^ can only ever match once, at the beginning of the string, so the /g modifier is redundant.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Possible bug with array pointer
by jockel (Beadle) on Jan 11, 2017 at 14:36 UTC |