This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Correct defined(%hash) entry
authorFather Chrysostomos <sprout@cpan.org>
Mon, 25 Jul 2011 06:29:29 +0000 (23:29 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 25 Jul 2011 06:29:43 +0000 (23:29 -0700)
I was too quick to submit the previous patch to perldiag. I only
realised after committing it that it contained factual errors.
defined(%foo) is still unreliable.

pod/perldiag.pod

index 5bf28c8..2c675fd 100644 (file)
@@ -1517,9 +1517,10 @@ array is empty, just use C<if (@array) { # not empty }> for example.
 
 =item defined(%hash) is deprecated
 
 
 =item defined(%hash) is deprecated
 
-(D deprecated) C<defined()> is not usually useful on hashes; it merely
-checks for non-empty, similar to a hash in boolean context (see
-L<perldata>).  If a non-empty check is what you want then just use:
+(D deprecated) C<defined()> is not usually useful on hashes, because it
+is not a reliable check for anything.  Sometimes it returns true on
+an empty hash, and sometimes false.  If a non-empty check is what you
+want then just use:
 
     if (%hash) {
        # not empty
 
     if (%hash) {
        # not empty