Salve!<br><br>Tenho que ordenar 3 milhões de arquivos de um diretório(e isso tende a aumentar). Mesmo que eu mova parte dos arquivos para outros diretórios, ainda assim vai sobrar arquivo pra caramba.<br><br>Desse modo, eu pesquisei no perlmonks e outros lugares, e achei esse código abaixo que até resolveria, se não fosse o problema de memória, pois usa uma quantidade de memória proporcional a quantidade de arquivos.<br>
<br><br><code><br><br>#!/usr/bin/perl <br><br>use strict;<br>use warnings;<br>use DateTime;<br><br>my $start_time = time;<br><br>my %times = ();<br><br>opendir DIR, $ARGV[0] or die "Couldn't open $ARGV[0]; $!\n";<br>
<br>my @sorted =<br>sort {<br>    $times{$b} cmp $times{$a}; # Was cmp D'oh! Thanks [dws]<br>}<br>map {<br>$times{$_} = (stat $_)[9]; $_;<br>} readdir DIR;<br><br>closedir DIR or warn "Couldn't close $ARGV[0]; $!\n";<br>
local $" = $/;<br>print "@sorted\n";<br><br>my $end_time = time;<br><br>my $enlapsed_time = $end_time - $start_time;<br><br>my $dt = DateTime->from_epoch( epoch => $enlapsed_time );<br><br>my $etime = $dt->hms(':');<br>
<br>print "\nCrapy time: $etime\n";<br><br clear="all"></code><br><br>Alguém conhece um algoritmo onde, sei lá, eu pudesse ordernar parte desses arquivos  e de depois juntar tudo de alguma forma, ou algo desse tipo?<br>
<br>Thx!<br><br><br>-- <br>André Garcia Carneiro<br>Analista/Desenvolvedor Perl<br>(11)82907780<br>