Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Deleting elements from array questions

by aufrank (Pilgrim)
on Aug 08, 2002 at 18:31 UTC ( #188688=note: print w/replies, xml ) Need Help??


in reply to Deleting elements from array questions

the problem is that there are still 10 elements if you just undef the match(es):

my @array = 1..10; print "@array\n"; my $item = 3; foreach my $element (@array) { undef $element if ($element eq $item); } print "@array\n"; print $#array + 1;

see, the array doesn't actually shrink. when you do a print $#array + 1 you still get a 10 (assuming there were 10 elements to start like there were here).

to get rid of the phantom element(s), you could use splice like this:

my @array = 1..10; print "@array\n"; my $item = 3; my @empties; my $count; foreach my $element (@array) { if ($element eq $item) { undef $element; push @empties, $count; } $count ++; } foreach (@empties) { splice (@array, $_, 1); } print "@array\n"; print $#array + 1;

hth,
--au

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://188688]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (4)
As of 2022-12-01 16:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?