On May 23, 12:57pm, Roderick Ford wrote:
> I can't figure out from the books why this does not produce a hash element:
>
> $addresses{$lineref->[0]} = ($#cmdNode >= 0 ? $#cmdNode : 0);
It is...
> perl -e '$lineref->[0] = "00401000"; $addresses{"$lineref->[0]"} =
> (defined @cmdNode ? $#cmdNode : 0); print $#{keys %addresses};'
It's just that
print $#{keys %addresses};
isn't doing what you think it is. Try this instead...
print scalar (keys %addresses)
..and I think you'll see the answer you expect (which is the number of
elements in the array).
I was puzzled about what exactly ``print $#{keys %addresses}'' is doing.
What I think is happening is that ``keys %addresses'' is getting converted
into a scalar and you're seeing the last array index of the array by that
name. Here's an example which should make this somewhat more clear:
$ perl -e '@aa = (1,2,3); print $#{'a' . 'a'}; print "\n";'
2
Kevin