in reply to Efficient array element deletion
On the other extreme of the spectrum, I could sayfor (-$#array .. 0) { splice (@array,$_,1) if ($array[$_] =~ /^\#/) }
That doesn't do what you seem to think it does. It starts with the second element of the array, iterates up to the last element of the array and finally ends with the first element of the array. If you splice elements out of the array then the elements remaining will be moved and won't be removed by subsequent splices.
What you need to do is start at the last element of the array and iterate towards the first element:
for ( reverse 0 .. $#array ) { splice @array, $_, 1 if $array[ $_ ] =~ /^\#/; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Efficient array element deletion
by ikegami (Patriarch) on Dec 04, 2008 at 23:55 UTC | |
by johngg (Canon) on Dec 05, 2008 at 12:58 UTC | |
by ikegami (Patriarch) on Dec 05, 2008 at 13:07 UTC | |
by BrowserUk (Patriarch) on Dec 05, 2008 at 14:11 UTC | |
by kennethk (Abbot) on Dec 07, 2008 at 15:33 UTC |