Perfect! Thanks a million..
Doug
--- Doug Johnson <[EMAIL PROTECTED]> wrote:
> In an array to find the number of elements in an array I :
>
> print "$#array\n";
>
> Is there a similar way to find the number of keys in a hash without
> cycling through them and without assigning the hash to an array?
You can print the hash in a scalar context:
%a = (a=>1,b=>2,c=>3);
print scalar %a;
This results in
3/8
Which means there are 3 elements, and space has been allocated for 8.
You can also do something like:
%a = (a=>1,b=>2,c=>3);
print scalar @{ [ %a ] } / 2;
Since [ %a ] will creates an anonymous reference to an array containing
all the keys AND values of %a, and evaluating that ref as an array in a
scalar contaxt tells you how many elements there were. Dividing that by
two gives you a count of the keys.
I'd do the first one, and just split it on the slash.
%a = (a=>1,b=>2,c=>3);
($elem) = split m[/], scalar %a;
print "$elem\n";
__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail - only $35
a year! http://personal.mail.yahoo.com/