If that's all you need to do, your files are cleanly formatted, and you have a useful shell, you could do it in a one-liner:
$ perl -nlae "$t+=$F[2]; END{print $t/$.}" *
(see
perlrun to understand the
-a,
-n,
-l and
-e options.)
For a more flexible (and verbose) approach, the following could be a useful skeleton for your code:
use strict;
use warnings;
use File::Find;
sub process_file{
return unless (-f); # Only work on files, not directo
+ries
open INPUT, '<', $_ or die "Couldn't open $_: $!";
while (<INPUT>){ # works through the file line-by-
+line
chomp; # delete trailing new line
my @columns = split /\s+/; # split on whitespace
print "TODO: Process the following columns: ",
join(" -- " => @columns), "\n";
}
close INPUT or die $!;
}
# Find any file in a directory named "data", for example
# (and its subdirectories)
find(\&process_file, 'data');
I am using
File::Find in this example to process files. There are other ways to approach this.