Как я могу отсортировать список строк по номерам в них?

Легкий, без сомнения, для вас ...

У меня есть список таких имен файлов;

fw_d.log.1.gz  
through  
fw_d.log.300.gz  

Когда я использую этот ниже блок кода, он почти сортирует его так, как я хочу, но не совсем.

#!/usr/bin/perl -w
my $basedir = "/var/log";
my @verdir = qw(fw_d);
my $fulldir;
my $configs;
my $combidir;

foreach $combidir (@verdir) {
    $fulldir = "$basedir/$combidir";
    opendir (DIR, $fulldir);
    my @files = grep { $_ ne '.' && $_ ne '..' && $_ ne 'CVS' readdir DIR;
    closedir (DIR);
    @files1 = sort {$a cmp $b}(@files);
    foreach my $configs (@files1) {
        print "Checking $configs\n";
        system("less $basedir/$combidir/$configs | grep \'.* Group = , Username = .* autheauthenticated.\' >> output.log" );
    }
}

вот результат вывода

Checking fw_d.log  
Checking fw_d.log.1.gz  
Checking fw_d.log.10.gz  
Checking fw_d.log.100.gz  
Checking fw_d.log.101.gz  
Checking fw_d.log.102.gz  

Как вы вижу, он почти сортирует то, на что я надеялся .... Есть ли у кого-нибудь предложения по чтению или по фрагменту кода, который я могу использовать?

Заранее спасибо.
Стив.

14
задан Wooble 8 June 2011 в 17:22
поделиться