[Chicago-talk] Removing an element from an array
Brian Katzung
briank at kappacs.com
Fri Jul 11 11:01:50 PDT 2008
Sorry, should that should be:
while (defined($symbol = shift(@symbol)))
(three close parens).
- Brian
Brian Katzung wrote:
> Hi Mike.
>
> Per "man perlsyn":
>
> If any part of LIST is an array, "foreach" will get very confused if
> you add or remove elements within the loop body, for example with
> "splice". So don't do that.
>
> I recommend building a new list. You can either retain or consume the
> old list.
>
> # Retain original array
> my @subset;
> foreach $symbol (@symbol)
> {
> push(@subset, $symbol) if (conditions);
> }
>
> # Consume original array
> my @subset;
> while (defined($symbol = shift(@symbol))
> {
> push(@subset, $symbol) if (conditions);
> }
>
> - Brian
>
>
> Mike Demir wrote:
>> Hi:
>>
>> So here is my quandry. I have a list of stock symbols stored in array
>> (@sym), and am looking to test each symbol against a series of
>> conditions (foo1, foo2....). When the condition is met, I would like
>> to remove that symbol and return to the top of the loop to start
>> working on the next symbol. I'm having no trouble getting the test
>> conditions to work, or the looping to work. However I can't seem to
>> remove the symbol from the array. It's a conceptual thing at this
>> point, so a solution is nice but not required. Need to understand.
>>
>> So here's what I had attempted...
>>
>> foreach $symbol(@symbol) {
>> if(foo1)
>
--
Brian Katzung, Kappa Computer Solutions, LLC
Leveraging UNIX, GNU/Linux, open source, and custom
software solutions for business and beyond
Phone: 877.367.8837 x1 http://www.kappacs.com
More information about the Chicago-talk
mailing list