目前我正在这样做:
# Find all files
File::Find::find(
sub {
my $file = $_;
return if -d $file;
return if $file !~ /(.*)\.htm$/;
...my processing code
}, $inputdir
);
但是我想按字母顺序处理所有文件,最终我想将所有文件名存储在一个数组中,对数组进行排序,然后使用 for each 循环并将我的处理代码放在那里,但我完全不知道如何做。
我已经做了很多谷歌搜索,但就像 perl 中的其他所有内容一样,有 100 种方法可以做所有事情,但似乎没有一个能让我做我想做的所有事情,即所有以 .html 结尾的文件,所有子目录在特定目录中,并根据文件名而不是目录结构按字母顺序排序。
谁能帮我吗?我知道这可以很容易地完成,我只是想不通。
谢谢 :)
编辑:我试过这样做:
File::Find::find(
sub {
#Only process html files
my $file = $_;
return if -d $file;
return if $file !~ /(.*)\.htm$/;
push(@files, $File::Find::name);
}, $inputdir
);
但是,如果我对数组 @files 进行排序,它将根据整个字符串对其进行排序,我只想根据文件名对其进行排序。我不认为有办法用 File::find:find 来做,因为在遍历所有文件之前它无法知道顺序是什么,所以我需要在之后进行排序。