in reply to Re: Sorting Directory and Filenames
in thread Sorting Directory and Filenames

i revised your code... because of the case-issue...
#!/usr/bin/perl use strict; use warnings; use File::Basename; my @files; while(<>) { chomp; push @files, $_; } sub fcmp { my $res = lc(dirname($a)) cmp lc(dirname($b)); $res = lc(basename($a)) cmp lc(basename($b)) unless $res; return $res; } my @sorted = sort fcmp @files; print "$_\n" for @sorted;

Replies are listed 'Best First'.
Re^3: Sorting Directory and Filenames
by ikegami (Patriarch) on Jan 10, 2009 at 19:13 UTC
    my @files; while(<>) { chomp; push @files, $_; }

    is a long winded way to say

    chomp( my @files = <> );

    And here's an alternate version that should be much faster for long lists:

    my @sorted = map /.*\0(.*)/s, sort map lc(dirname($_)) . "\0" . lc(basename($_)) . "\0" . $_, @files;