Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

printing hash produce errors

by Xfiles (Initiate)
on Jun 02, 2013 at 12:06 UTC ( #1036580=perlquestion: print w/ replies, xml ) Need Help??
Xfiles has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to execute the following line of code :
#!usr/bin/perl use strict ; use warnings ; my %hash = {'perl' => 1 , 'C' => 0} ; foreach my $key(sort keys %hash) { print "$key : $hash{$key} \n" ; }
but it gives me the following error :
Reference found where even-sized list expected at line 9. Use of uninitialized value $hash{"HASH(0x98bf7ec)"} in concatenation ( +.) or string at line 12. HASH(0x98bf7ec) :
so what is exactly the problem ?

Replies are listed 'Best First'.
Re: printing hash produce errors
by bart (Canon) on Jun 02, 2013 at 12:18 UTC
    Your problem is that you're mixing up hashes (%hash) with hash references ({ key => value }) -- note the braces.

    Replace the braces with parens and it should work:

    my %hash = ('perl' => 1 , 'C' => 0) ;
    This produces a flat list, not a hashref, which is exactly what assignment to a hash wants.

    Alternatively you could use a hashref (= a scalar pointing to a hash) everywhere:

    my $hash = {'perl' => 1 , 'C' => 0} ; foreach my $key(sort keys %$hash) { print "$key : $hash->{$key} \n" ; }
      that's it , thanks .

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1036580]
Approved by bart
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (11)
As of 2016-08-29 19:14 GMT
Find Nodes?
    Voting Booth?
    The best thing I ever won in a lottery was:

    Results (408 votes). Check out past polls.