http://qs1969.pair.com?node_id=689032


in reply to sorting files

With reference to your update, you were pretty close, you just needed to actually compare the values to went to the trouble of extracting :) ...
sub files_sort { my $first_number; my $second_number; if ($a =~ /(\d+)_(\d+)_duration_(\w+)_comptage_(\d+).txt$/){ $first_number = $1; } if ($b =~ /(\d+)_(\d+)_duration_(\w+)_comptage_(\d+).txt$/){ $second_number = $1; } $first_number <=> $second_number; }
Have a look in 'perldoc perlop' if you don't know what the 'space ship' operator does, it's _very_ handy for sort functions, and is doing what you were trying to do with your if's and elses.

I would add though, that if this was my code, I'd probably write a sub to extract the index number from the file name, and write the whole thing like this.

sub my_sort { parse_file_name($a) <=> parse_file_name($b); } sub parse_file_name { if ($_[0] =~ /(\d+)_\d+_duration_\w+_comptage_\d+.txt$/) { return $1; } else { return 0; } }
---
my name's not Keith, and I'm not reasonable.