#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11147822 use warnings; my @files = map "/tmp/11147822.$_.txt", 1 .. 100; # FIXME my $outpath = "/tmp/11147822.outpath"; # FIXME open my $fh, '-|', "sort @files" or die; open my $tosort, '|-', "sort -n -k2 >$outpath" or die; <$fh> =~ /^(\w+)\s+(\d+)/ or die; my ($name, $value) = ($1, $2); while( <$fh> ) { if( /^(\w+)\s+(\d+)/ ) { if( $1 eq $name ) { $value += $2; } else { print $tosort "$name\t$value\n"; ($name, $value) = ($1, $2); } } } print $tosort "$name\t$value\n"; # be sure to print last one close $tosort or die;