Hi All,
I have some 10 text files with 3 columns of number in them, I am tring to calculate the average of each column and printing a file with file name tab separeted by average values of 3 columns.
Here is my code, for the first file the program gives me correct values but after that wrong, someone could suggest me where I am wrong.
and here is the text file
Thanks in advance.
Kumar
I have some 10 text files with 3 columns of number in them, I am tring to calculate the average of each column and printing a file with file name tab separeted by average values of 3 columns.
Here is my code, for the first file the program gives me correct values but after that wrong, someone could suggest me where I am wrong.
Code:
#!/usr/bin/perl use strict; use warnings; my ($sum1,$number_of_items1,$average1, $sum2,$number_of_items2,$average2, $sum3,$number_of_items3,$average3, $average_round1,$average_round2,$average_round3); my ($folder,@files,$name); my (@temp1,@temp2,@temp3); $folder = "/home/r/codes/"; opendir(FOLDER,$folder); @files = grep {/calc_box_.*.dat$/} readdir(FOLDER) or die "Check for the dat files"; #print "@files"; foreach my $file(@files) { open(FH,"$file") or die "Check the file"; $name = $file; $name =~ s/\.dat//g; while(<FH>) { chomp $_; if($_=~/\s(\d.*)\s(\d.*)\s(\d.*)/) { #print "$1\t$2\t$3\n"; @temp1=$1; foreach my $num1(@temp1) { $number_of_items1++; $sum1 += $num1; } $average1 = $sum1 / $number_of_items1; @temp2=$2; foreach my $num2(@temp2) { $number_of_items2++; $sum2 += $num2; } $average2 = $sum2 / $number_of_items2; @temp3=$3; foreach my $num3(@temp3) { $number_of_items3++; $sum3 += $num3; } $average3 = $sum3 / $number_of_items3; } } $average_round1 = sprintf '%.4f', $average1; $average_round2 = sprintf '%.4f', $average2; $average_round3 = sprintf '%.4f', $average3; print "$name\t$average_round1\t$average_round2\t$average_round3\n"; }
Code:
94.9362 94.9362 103.74 94.6093 94.6093 103.857 94.6289 94.6289 103.697
Kumar
Comment