use strict; use warnings; my ($file, $handle, $key, $val, %data); for $file ('file1.txt', 'file2.txt', 'file3.txt', 'file4.txt' , 'file5.txt') { open($handle, $file); while (<$handle>) { chomp; ($key, $val) = split /\s/, $_; $data{$key}{'count'}++; $data{$key}{'sum'} += $val; } } open($handle, '>average.txt'); for $key (sort { $a <=> $b } keys %data) { $data{$key} = $data{$key}{'sum'} / $data{$key}{'count'}; print $handle "$key\t$data{$key}\n"; } close($handle);