in reply to Re^2: HASH keys preserve class ?
in thread HASH keys preserve class ?
First you say keys are scalars not strings, then you say there might be a way of allowing things other than strings.
Except possibly through an XS trick, keys can only be strings. perldata confirms this: "Hashes are unordered collections of scalar values indexed by their associated string key." If you try to use a reference as a key, the reference will not be a key of the hash. It's string representation will.
I guess your point was that you could attempt to use a non-string as a key. That is indeed valid. The scalar will be stringified before being used as a key.
The following is an attempt to use a reference as a key in a hash:
use strict; use warnings; my @var = qw( a b c ); my $ref = \@var; my %hash; $hash{$ref} = 1; foreach (keys %hash) { print @$_, "\n"; }
In the latest Perl (5.8.8), the above code outputs
Can't use string ("ARRAY(0x225fb8)") as an ARRAY ref while "strict ref +s" in use
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: HASH keys preserve class ?
by Limbic~Region (Chancellor) on Oct 04, 2006 at 15:38 UTC | |
by BrowserUk (Patriarch) on Oct 04, 2006 at 16:19 UTC |