1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #!/usr/bin/perl
use strict;
use warnings;
use Carp;
use v5.10.0;
use Sort::External;
my $filename = 'gros_fichier.txt';
open my ($bigfile), '>', $filename
or die "$filename : $!\n";
for(my $i = 150_000_000; $i; $i--) {
print {$bigfile} "$i\t$i\n";
}
close($bigfile);
my $time = time();
my $sortex = Sort::External->new(
mem_threshold => 1024**2 * 128,
# sortsub => $sortscheme,
);
open my($hugefile) , '<', $filename
or die "write $filename : $!\n";
while (<$hugefile>) {
$sortex->feed(pack('N',(split /\t/)[1]) . $_);
}
close($hugefile);
$sortex->finish();
open my($sortedfile), '>', 'sorted.txt'
or die "sorted.txt :$!\n";
while( defined (my $line = $sortex->fetch()) ){
print {$sortedfile} (substr $line, 4);
}
close $sortedfile;
say +(time() - $time) , " secondes"; |