in reply to Re: undef as a key in a hash.
in thread undef as a key in a hash.

I wonder what he was thinking...

The hash-style usage of constant wasn't added until perl 5.7.1, and the defined $name check was around before that. Basically all of 5.7.0's code was kept intact and put in the for loop. The defined $name check was just accidentally (I presume) left inside the for loop.

Here's how it should look.

my $multiple = ref $_[0]; if ( $multiple ) { ... } else { unless (defined $_[0]) { require Carp; Carp::croak("Can't use undef as constant name"); } $constants{+shift} = undef; } foreach my $name ( keys %constants ) { ... }
Not that this matters much, because
use constant undef, 'x';
will fail anyway. You just get a slightly less clear error message.

lodin