Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

reference of hash

by steph_bow (Pilgrim)
on Jun 13, 2008 at 13:48 UTC ( [id://691899]=perlquestion: print w/replies, xml ) Need Help??

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

Hello Dear Monks

I am usin a hash reference in my program but I made a mistake. Could you check ? Thanks. I just wrote the parts where the problem lies. I have not written what has been tested.

I have updated the code with bits I found important to write

sub flow_count{ my $HASH_OF_FLOW; my $view = $_[0]; # FTFM or CTFM ... ... foreach my $file(@FILES_IN_THE_FOLDER){ my $key = "$reg;$date"; # M2 is a number which has been computed $HASH_OF_FLOW->{'$key'} = 'M2'; } return $HASH_OF_FLOW; } my $FTFM_HASH_OF_FLOW = flow_count("FTFM"); my $CTFM_HASH_OF_FLOW = flow_count("CTFM"); my @FTFM_KEYS = keys %$FTFM_HASH_OF_FLOW; foreach my $key(@FTFM_KEYS){ my $FTFM_CTFM_diff = $FTFM_HASH_OF_FLOW{$key} - $CTFM_HASH_OF_FLOW +{$key}; print $OUTFILE "$key;$FTFM_HASH_OF_FLOW{$key};$CTFM_HASH_OF_FLOW{$ +key};$FTFM_CTFM_diff\n"; }

Replies are listed 'Best First'.
Re: reference of hash
by toolic (Bishop) on Jun 13, 2008 at 13:56 UTC
    $HASH_OF_FLOW->{'$key'} = 'M2';
    Single quotes prevent variable interpolation of $key. You probably want:
    $HASH_OF_FLOW->{$key} = 'M2';
Re: reference of hash
by radiantmatrix (Parson) on Jun 13, 2008 at 14:52 UTC

    I see a couple of problems:

    1. Inside flow_count, you say $HASH_OF_FLOW->{'$key'} = 'M2'. By surrounding $key with single quotes, you're getting the string '$key' rather than the value in the variable $key. Drop those quotes.
    2. In your foreach loop, you're not dereferencing your hashrefs. For example, where you say $FTFM_HASH_OF_FLOW{$key}, you should be saying $FTFM_HASH_OF_FLOW->{$key}.
    3. You're not using strict and warnings -- if you were, you'd have been scolded for #2, above.

    As an aside, you may want to read up on How (Not) To Ask A Question; it will advise you on how to get better responses. For example, providing the text of the error you're receiving would have been useful.

    You might also want to take a look at Data::Dumper; if you'd used that to inspect the contents of $HASH_OF_FLOW, you'd have very quickly seen problem #1.

    <radiant.matrix>
    Ramblings and references
    “A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort.” — Herm Albright
    I haven't found a problem yet that can't be solved by a well-placed trebuchet

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://691899]
Approved by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2024-04-20 01:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found