Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: sorting files

by reasonablekeith (Deacon)
on May 29, 2008 at 14:57 UTC ( [id://689032] : note . print w/replies, xml ) Need Help??

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.