données non triéesBesoin d'aide pour le tri liste des fichiers en Perl basé sur datestamp dans le nom de fichier
5CM00225_10_16_2017_10_54_42.xml
5CM10538_10_16_2017_11_04_18.xml
1ZM06004_10_16_2017_11_04_14.xml
5XM10010_10_17_2017_08_00_47.xml
5ZM05391_10_15_2017_08_51_07.xml
5ZM05388_10_17_2017_08_01_06.xml
5ZM00058_10_17_2017_08_00_49.xml
NMC00166_10_15_2017_08_51_06.xml
5CM10538_10_15_2017_08_51_06.xml
Résultats attendus
NMC00166_10_15_2017_08_51_06.xml
5CM10538_10_15_2017_08_51_06.xml
5ZM05391_10_15_2017_08_51_07.xml
5CM00225_10_16_2017_10_54_42.xml
1ZM06004_10_16_2017_11_04_14.xml
5CM10538_10_16_2017_11_04_18.xml
5XM10010_10_17_2017_08_00_47.xml
5ZM00058_10_17_2017_08_00_49.xml
5ZM05388_10_17_2017_08_01_06.xml
Fondamentalement, je suis Net :: SFTP pour obtenir un répertoire liste hors d'un site distant et comparez à une liste de fichiers locale. Je voudrais trier la liste par date dans le nom de fichier mais en rencontrant des problèmes dus à l'existence d'autres informations dans la chaîne que je dois ignorer.
my $sftp = Net::SFTP->new($host, %args);
my @list = $sftp->ls($path);
open(my $fh, '>', $file); # open a log file to save remote directory listing
my @sorted = map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [$_, $_=~/(\d{2})_(\d{2})_(\d{4})_(\d{2})_(\d{2})_(\d{2})/] } # unsuccessful sorting attempt
@list;
foreach my $item (@sorted) {
$i = ${item}->{filename};
print $fh "$1\n"; # prints each record to the open log file
}
close $fh;
Je l'ai fait le tri avant et beaucoup de regex mais jamais en même temps et je suis clairement maladroit, parce que ce n'est pas quelque chose de tri et de ne pas jeter des erreurs.
J'ai pensé à extraire le DD_MM_YYYY_hh_mm_ss de chaque chaîne et en essayant de l'utiliser comme référence, mais je n'ai pas fait de progrès utilisables, donc j'ai gratté l'idée.
Beaucoup plus prétentieux que ma solution! – Andrey
Merci! Solution simple, a travaillé exactement comme demandé. Voyant ce que vous avez fait différent a souligné pourquoi le mien n'a pas de sens, appréciez votre aide. – frozenthorn