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

HI i have the script for finding the occurence of the number data in each file in a directory, but it gives me a wrong output ie the frequency number gets added up for each next number from other file.
#!usr/bin/perl use strict; opendir(DIR, "") or die "$!"; my @files =grep {/\.out$/} readdir (DIR); my %frequency; foreach my $file(@files){ open(FR,$file); while(<FR>){ my @column = split ' ' or next; $frequency{$column[2]}++; } { local($\,$,) = ("\n","\t"); my @max = sort {$frequency{$b} <=> $frequency{$a}} keys %frequency; print "$max[0]=$frequency{$max[0]}\n"; } } closedir (DIR);

this gives me an output as given below where 1st column is the number which is equal to the frequency

65705=95 65705=210 65705=266 65705=266

which is wrong cause wen i checked indivual file frequency it gave me an output as 65705 115 for file1 32987 74 for file2

Replies are listed 'Best First'.
Re: frequecny of occurence showing an error
by Taulmarill (Deacon) on Sep 30, 2011 at 11:37 UTC
    Since you declared the hash %frequency outside the foreach-loop, its contents are not deleted after each iteration. To archive this you should declare the hash inside the foreach-loop.