tos has asked for the wisdom of the Perl Monks concerning the following question:

for a quick lookup on var-contents i use to print it via print "\$var: $var\n"; Now i noticed that the value of hashes can't be printed in contrast to other var-types if the hash is enclosed in quotation marks.
$s="1 x 2 y"; @a = $s; %h = @a; print "\$s: $s\n"; print "\@a: @a\n"; print "\%h: %h\n"; print "\%h: ", %h, "\n";
produces
$s: 1 x 2 y @a: 1 x 2 y %h: %h %h: 1 x 2 y
why that ?

Replies are listed 'Best First'.
Re: hashes and quotation marks
by pfaut (Priest) on May 16, 2003 at 12:07 UTC
Re: hashes and quotation marks
by davorg (Chancellor) on May 16, 2003 at 12:39 UTC

    You know, quite apart from the problems you have with the non-interpolation of hashes (which others have explained to you), your code really doesn't do what you think it does.

    $s="1 x 2 y";

    This creates a scalar $s with the value "1 x 2 y".

    @a = $s;

    This creates an array @a that has one element. This one element has the value "1 x 2 y". I think you probably wanted to use split here.

    %h = @a;

    This creates a hash %h with one key, "1 x 2 y", and one value, undef. If you'd used split on the previous line then this would have created a hash with key/value pairs of 1 => x and 2 => y.

    --
    <http://www.dave.org.uk>

    "The first rule of Perl club is you do not talk about Perl club."
    -- Chip Salzenberg

      of course you're right. thanks.
Re: hashes and quotation marks
by Skeeve (Parson) on May 16, 2003 at 12:21 UTC
    Use Data::Dumper for the purpose of just looking into your Hashes.
Re: hashes and quotation marks
by Rhandom (Curate) on May 16, 2003 at 15:16 UTC
    You could do:
    print "\%h: @{[ %h ]}\n"; # take the deref of the ref of the array of + %h


    my @a=qw(random brilliant braindead); print $a[rand(@a)];