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