> i want to remove items from a hash then later see if they exist using
> defined().  for example:
>

You don't see if they exist using 'defined', you see if they are defined
:-). To see if they exist, you use 'exists'.  Which hits to the heart of
your questions below.
 
> delete($hash{MYKEY});

This removes the spot in the hash for that value, which does make it not
defined.

> # blah blah
> if (defined($hash{MYKEY}))      {
>         # do blah blah
> }

In most cases this is sufficient.

> 
> which should i use?  delete() or undef()?  obviously i could write a small
> script to test this (which i'm going to know), but i'd also like to hear
> from an expert about the subtle (if any) difference between the two if
they
> both work.
> 

Not sure that I qualify as an expert, but there is a difference. using
'undef' will set the value to a particular key in the hash to the
undefined value, where 'delete' will remove that key/value pair from the
hash completely. In the case of setting the value to undef, 'defined'
will fail, but 'exists' will still be true; when doing 'delete' both
will fail.

perldoc -f undef
perldoc -f exists
perldoc -f delete

> also, are these functionally equivalent?
> $myvar = undef();
> undef($myvar);
> 

To my knowledge.

HTH,

http://danconia.org

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to