in reply to Counting keys in a referenced hash

%test is a hash; $test is a scalar with value 3

Possibly, $test = { test1 => '1', test2 => '2', ... }; was meant.

Follow-up question: Why does $test have a value of 3 and not 6?
     ... since ( test1 => '1', test2 => '2', ... ) is the same as ( 'test1, '1', 'test2', '2', ... )

Replies are listed 'Best First'.
Re^2: Counting keys in a referenced hash
by Locutus (Beadle) on Dec 03, 2006 at 16:11 UTC
    Dear Anonymus Monk,

    $test doesn't have a value of 6 because unlike an array variable a list literal doesn't evaluate to the number of elements if used in scalar context but to its last element. Try

    #!/usr/bin/perl use strict; use warnings; my $scalar = qw/one two three/; my @array = qw/one two three/; print '$scalar is ', $scalar, "\n"; # prints + 'three' print '@array in scalar context is ', scalar @array, "\n"; # prints + 3

    for example. Perl supposes you know the length of a literally coded (i.e. hard-coded) list anyway and tries to offer you something more useful when it discovers a "Useless use of a constant in void context"...