Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
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 having a coffee break in the Monastery: (3)
As of 2025-03-25 22:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    When you first encountered Perl, which feature amazed you the most?










    Results (67 votes). Check out past polls.

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.