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

Hi Monks! I have this loop but if i run it i become in the hash reference $freqocurrence a lot of 0s and i donīt know why.. any suggestions?
my $freqocurrence={}; my $observation={}; my $total10=0; sub freq_oc{ foreach my $key (%$observation){ $total10 += $observation->{$key}; } foreach my $key (%$observation){ $freqocurrence->{$key} = $observation->{$key}/$total10; print "Frequency of ocurrence:Aminoacid $key-> $freqocurrence->{$k +ey}\n"; } print Dumper $observation; print Dumper $freqocurrence; }

Replies are listed 'Best First'.
Re: Problem in a Loop
by hdb (Monsignor) on Sep 19, 2013 at 13:01 UTC

    If you want to loop over the keys of the hashes, you have to say so:

    foreach my $key (keys %$observation){ foreach my $key (keys %$observation){
      now it works but i have another question .. do you know why when i print data Dumper i donīt get anything?
      my $freqocurrence={}; sub freq_oc{ foreach my $key (keys %$observation){ $total10 += $observation->{$key}; } foreach my $key (keys %$observation){ $freqocurrence->{$key} = $observation->{$key}/$total10; print "Frequency of ocurrence: Aminoacid $key-> $freqocurrence +->{$key}\n"; } } print Dumper $freqocurrence;

        I can only guess that your script misses the following three lines near the top:

        use strict; use warnings; use Data::Dumper;
      thanks! i completely forgott it! :D
Re: Problem in a Loop
by derby (Abbot) on Sep 19, 2013 at 13:25 UTC