Hi
for($index=1; $index<10; $index++) {}
Is the villain of the programme

On first loop itself it read out full file.
And every thing was stored w.r.t index=1;
As after that file's while loop never gets executed because of EOF of
that file.

Ur first logic is correct and I think the second one is not required at
all!

Bhargav.


-----Original Message-----
From: country [mailto:[EMAIL PROTECTED] 
Sent: Friday, August 10, 2007 12:45 AM
To: beginners@perl.org
Subject: Calculating Column Averages from a CSV File

I am trying to calculate column averages (excluding 0's) for all the
columns in a CSV file except the first column.  My input CSV file is as
follows:

pickcpua.dat

IMAGINGNY,1.45,0.42,1.54,1.49,1.47,1.36,1.81,0.47,1.8,0.55,0.38
JBSQLTST,1.29,1.09,1.13,1.88,1.11,1.44,1.25,1.23,1.05,1.39,1.61
SNYCSQL,4.58,4.24,3.87,3.9,4.13,2.04,3.34,7.6,3.58,1.26,7.45
Snynetsrv,
26,26.34,24.59,26.46,26.24,26.14,32.35,31.77,31.77,29.92,26.59
W32SPLMCOR01,8.27,13.23,7.73,8.85,9.15,13.95,0,0,0,0,0
W32SDAPSCT01,3.07,3.14,2.97,3.28,21.65,54.23,3.16,3.02,3.26,2.77,3.40
W32SDASALM01,1.22,1.3,1.11,0.92,1.57,1.06,1.01,0.87,0.93,2.26,0.91
W32SMSCSD02,15.38,12,22.32,23.3,19.74,46.42,2.06,1.7,2.17,2.85,1.74
W32SPLMCOR02,13.24,13.23,7.73,8.85,9.15,13.95,0,0,0,0,0

I have been able to calculate a column average for a particular column
(excluding 0's) using the following perl code:

#!/usr/bin/perl

use strict;
use warnings;

my $file = $ARGV[0] || 'pickcpua.dat';
my $col = $ARGV[1];

open(my $CPUFILE, "<", $file) || die "Unable to open sorted file !";

my @values;
while (<$CPUFILE>) {
  chomp;
  my @col = split /,/;     # Assume basic comma delimited

if ($col[$ARGV[1]] > 0)  {
  push @values, $col[$ARGV[1]];   # Column 2 is what we want
  }
}
my $total = 0;
$total += $_ for @values;
my $average = $total /@values;

print "Average CPU Time for all servers in cpuatest.dat file is
$average";

When trying to have perl calculate the column average(excluding 0's) for
all columns excluding the first column, using the following perl code,
perl is calculating the 2nd column's average 9 times rather than
computing the column average for the 2nd through 10th column.  The code
is as follows:

#!/usr/bin/perl

use strict;
use warnings;

my $file = $ARGV[0] || 'pickcpua.dat';

open(my $CPUFILE, "<", $file) || die "Unable to open sorted file !";

  my @values;
  my @colval;

for($index=1; $index<10; $index++) {

   while (<$CPUFILE>) {
     chomp;
     my @col = split /,/;     # Assume basic comma delimited

      if ($col[$index] > 0)  {
        push @values, $col[$index];   # Column 2 is what we want
        push @colval, $col[$index];   # Column 2 is what we want
        }
   }        ## End while loop

my $total = 0;
$total += $_ for @colval;

  print "Pass $index through data \n";
  print "colval is @colval \n";
  print "values is @values \n";

my $average = $total /@colval;

print "Average CPU Time for Column for all servers in cpuatest.dat file
is $average \n";
  }     ## End of initial $index for loop

close $CPUFILE or die;

I would appreciate it if someone could tell me what I am doing wrong in
going from the calculation of one column's average to caalculating the
column average for all columns other than the first column.  I do not
think I am using the for loop properly in this case

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - -

This message is intended only for the personal and confidential use of the 
designated recipient(s) named above.  If you are not the intended recipient of 
this message you are hereby notified that any review, dissemination, 
distribution or copying of this message is strictly prohibited.  This 
communication is for information purposes only and should not be regarded as an 
offer to sell or as a solicitation of an offer to buy any financial product, an 
official confirmation of any transaction, or as an official statement of Lehman 
Brothers.  Email transmission cannot be guaranteed to be secure or error-free.  
Therefore, we do not represent that this information is complete or accurate 
and it should not be relied upon as such.  All information is subject to change 
without notice.




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to