jimmy@pyra.co.uk (Jimmy Aitken) (04/09/91)
I have a list of stuff in an associative array, and as I process each
elemnt, I want to undefine it. When I finish processing the array via
a key look up, the element is removed. This is done so that I have the
remaining entries left which need to be handled specially. i.e.
while(<>) {
last if /^end/;
$ARRAY{$_}=1;
}
while(<>) {
($f1,$f2,$f3)=split(/"/,$_);
if (defined($ARRAY{$f2})) {
process it;
undef $ARRAY{$f2};
}
}
while(($key,$value)=each%ARRAY) {
process $value;
}
In the case above, the entry in the array ($value) is undefined, but
the name of the element is still there. Is there any way to remove
the name of the element sso it wont appear in the $key variable in the
above example?
I can get around the problem, by doing a 'prcoess $key if
defined($value)', but I was wondering if there was a 'cleaner' way.
Thanks,
Jimmy
--
jimmy@pyra.co.uk -m------- Jimmy Aitken
jimmy@pyramid.pyramid.com ---mmm----- Pyramid Technology Ltd
..!mcsun!ukc!pyrltd!jimmy -----mmmmm--- Pyramid House, Solartron Rd
(+44) 252 373035 -------mmmmmmm- Hants GU14 7PL, ENGLAND
- Managing software engineers is like herding catstchrist@convex.COM (Tom Christiansen) (04/10/91)
From the keyboard of jimmy@pyra.co.uk (Jimmy Aitken):
:In the case above, the entry in the array ($value) is undefined, but
:the name of the element is still there. Is there any way to remove
:the name of the element sso it wont appear in the $key variable in the
:above example?
Use the delete operator.
delete $a{$x};
--tom