C:\test>dir junk47.dat.* 26/10/2012 17:04 16,266,705 junk47.dat.1 26/10/2012 17:04 16,266,705 junk47.dat.10 26/10/2012 17:04 16,266,705 junk47.dat.100 26/10/2012 17:04 16,266,705 junk47.dat.11 26/10/2012 17:04 16,266,705 junk47.dat.12 ... 26/10/2012 17:04 16,266,705 junk47.dat.95 26/10/2012 17:04 16,266,705 junk47.dat.96 26/10/2012 17:04 16,266,705 junk47.dat.97 26/10/2012 17:04 16,266,705 junk47.dat.98 26/10/2012 17:04 16,266,705 junk47.dat.99 101 File(s) 1,642,937,205 bytes C:\test>head junk47.dat.1 51 opt/src/1.tar 100444 1247464676 9476013183 283320 NA 1 0xbe2d 0x40000006 51 opt/src/2.tar 100444 1247464676 9802856445 283320 NA 1 0xbe2d 0x40000006 51 opt/src/3.tar 100444 1247464676 1116638183 283320 NA 1 0xbe2d 0x40000006 51 opt/src/4.tar 100444 1247464676 7417297363 283320 NA 1 0xbe2d 0x40000006 51 opt/src/5.tar 100444 1247464676 1416931152 283320 NA 1 0xbe2d 0x40000006 51 opt/src/6.tar 100444 1247464676 4827880859 283320 NA 1 0xbe2d 0x40000006 51 opt/src/7.tar 100444 1247464676 1016540527 283320 NA 1 0xbe2d 0x40000006 51 opt/src/8.tar 100444 1247464676 232543945 283320 NA 1 0xbe2d 0x40000006 51 opt/src/9.tar 100444 1247464676 3099975585 283320 NA 1 0xbe2d 0x40000006 51 opt/src/10.tar 100444 1247464676 6366271972 283320 NA 1 0xbe2d 0x40000006 C:\test>tail junk47.dat.1 51 opt/src/199991.tar 100444 1247464676 5569458007 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199992.tar 100444 1247464676 6560974121 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199993.tar 100444 1247464676 9388122558 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199994.tar 100444 1247464676 5976562500 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199995.tar 100444 1247464676 8576354980 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199996.tar 100444 1247464676 5962219238 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199997.tar 100444 1247464676 6407470703 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199998.tar 100444 1247464676 7785034179 283320 NA 1 0xbe2d 0x40000006 51 opt/src/199999.tar 100444 1247464676 8945312500 283320 NA 1 0xbe2d 0x40000006 51 opt/src/200000.tar 100444 1247464676 4286804199 283320 NA 1 0xbe2d 0x40000006 C:\test>wc -l junk47.dat.1 200000 junk47.dat.1 C:\test>type junk47.pl #! perl -slw use strict; use Time::HiRes qw[ time ]; use List::Util qw[ sum min ]; sub process_flist { my ($name, $limit) = @_; my ($nlines, $total, @lines, @size); open(my $fh, '<', $name) or die("Error opening file `$name': $!\n"); while (<$fh>) { my @f = split / /; next if @f > 10; push @lines, $f[4] . '/' . $f[1]; } $nlines = scalar @lines; { no warnings 'numeric'; $total = sum(@lines); $limit = min($limit, $nlines); @lines = (sort {$b <=> $a} @lines)[0 .. ($limit - 1)]; } return ($nlines, $total, @lines); } our $L //= 1000; our $N //= 7; my $start = time; my( $n, $t, @l ) = process_flist( 'junk47.dat', $L ) for map "junk47.dat.$_", 1.. $N; printf "%.3f\n", time() - $start; #### C:\test>junk47 -N=100 -L=20 147.615