Note 1:
$a <=> $b compares numerically.
@a = sort { $a <=> $b } (1, 5, 3);
$a cmp $b compares alphabetically.
@a = sort { $a cmp $b } qw(apple orange banana);
Note 2: readdir's outputs doesn't need to be chomped.
This will do the trick:
@status = sort { my $mtime_a = (stat("$target_dir\\$a"))[9]; my $mtime_b = (stat("$target_dir\\$b"))[9]; $mtime_a <=> $mtime_b } @status;
But it's very expensive because stat can be called multiple times for each file. So here's the workaround (called the Schwartzian Transform):
@status = ( map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [ $_, stat("$target_dir\\$_"))[9] ] } @status );
In reply to Re: Sorting out file dates on a remote Win32 PC
by ikegami
in thread Sorting out file dates on a remote Win32 PC
by blackadder
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |