为什么使用perl我的排序失败了两位数?

时间:2017-07-04 05:14:10

标签: perl

我使用此代码过滤文件名,但如果名称包含两位数,则无法正确排序。 如何使代码有意义?

来自$output_dir

的输入
sample1
sample3
sample14
sample9

我的代码

use strict;
use warnings;

use File::Path qw(remove_tree);

my $path_output = $output_dir;

find1($path_output);

sub find1 {
    my ($s) = @_;

    my (@dirs) = grep { -d } glob $s . '/*';

    my ($link) = sort { 
        my ($m) = $a =~ m/\/(sample\d+)$/;
        my ($n) = $b =~ /\/(rev\d+)$/;
        $n cmp $m
    }
    grep {
        /\/sample\d+$/
    } @dirs;

    foreach ( @dirs ) {
        ( $_ =~ m/sample(\d+)$/ && $_ ne $link ) ? remove_tree($_) : find1($_);
    }
}

我从代码

获得了以下输出
sample9

但是我的预期输出如下

sample13

为什么我的代码中的排序和比较无法使用两位数字?相反,它只考虑0-9。

我想更改我的代码以比较任意数量的数字。我怎么能这样做?

0 个答案:

没有答案
相关问题