Perl: Array sortieren nach Dateinamen
Man erhält eine Liste von Dateien die "sortiert" sind. Bsp:
So einfach ist es mit Perl etwas Ordnung zu schaffen:
19_Giraffe.jpg
22_Luxmessungen.jpg
24_Agama.jpg
131_Flughafen.jpg
02_Arusha.jpg
21b_Sonne.jpg
21a_Sonnenaufgang.jpg
130_Landeanflug.jpg
22_Luxmessungen.jpg
24_Agama.jpg
131_Flughafen.jpg
02_Arusha.jpg
21b_Sonne.jpg
21a_Sonnenaufgang.jpg
130_Landeanflug.jpg
foreach ( sort {&file_nr_sort}(@dir_list) ) { print $_; }
sub file_nr_sort() {
my $ax = ($a =~ /^(\d+)(\w|)_/) ? ($1 * 1000) + ord($2) : $a;
my $bx = ($b =~ /^(\d+)(\w|)_/) ? ($1 * 1000) + ord($2) : $b;
$ax<=>$bx;
}
sub file_nr_sort() {
my $ax = ($a =~ /^(\d+)(\w|)_/) ? ($1 * 1000) + ord($2) : $a;
my $bx = ($b =~ /^(\d+)(\w|)_/) ? ($1 * 1000) + ord($2) : $b;
$ax<=>$bx;
}
- Stefan Rieger's blog
- Anmelden um Kommentare zu schreiben