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 ?

Comment on printing hash produce errors
Select or Download Code
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 pondering the Monastery: (8)
As of 2015-01-27 08:53 GMT
Find Nodes?
    Voting Booth?

    My top resolution in 2015 is:

    Results (198 votes), past polls