Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^3: Why are elements of my array getting deleted?

by GrandFather (Sage)
on Apr 19, 2012 at 00:50 UTC ( #965825=note: print w/replies, xml ) Need Help??


in reply to Re^2: Why are elements of my array getting deleted?
in thread Why are elements of my array getting deleted?

Well, they do say you have to work hard to be lazy. Very often using the default variable is too lazy, as in this case. Consider:

use strict; run(); sub run { my @plist = ("ABC", "DEF"); dumpList("Initial list", @plist); foreach (@plist) { my $ccmexecResult = ccmexec_nodie("echo HelloWorld"); dumpList("ccmexec returned: $ccmexecResult", @plist); } } sub dumpList { my ($when, @list) = @_; print "$when\n", join "\n", @list, '', ''; } sub ccmexec_nodie { my $command = $_[0]; $_ = "Well that sucks"; return "$command: result"; }

Prints:

Initial list ABC DEF ccmexec returned: echo HelloWorld: result Well that sucks DEF ccmexec returned: echo HelloWorld: result Well that sucks Well that sucks

The loop variable used by for is aliased to each element in the array. If you are lazy and use the default variable for the loop variable then change the contents of the default variable you end up changing the contents of the array element being processed. The simple fix is to use an explicit loop variable:

foreach my $element (@plist) {
True laziness is hard work

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://965825]
help
Chatterbox?
[stevieb]: cheers beech. twas totally my mistake, and I got bit. When things work for so long without issue, one becomes complacent (ie. replace we/one with I ;) I've been copy/pasting that around for a few years without a hiccup, so when...
[stevieb]: choroba pointed that out, I was just, you know, *sigh*. In effect, I was lucky and fortunate
[stevieb]: Kind of like my regex-fu went out the window, but only while looking at that specific file ;)

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (6)
As of 2017-07-25 23:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (383 votes). Check out past polls.