現在、私はこれをやっています:
# Find all files
File::Find::find(
sub {
my $file = $_;
return if -d $file;
return if $file !~ /(.*)\.htm$/;
...my processing code
}, $inputdir
);
しかし、すべてのファイルをアルファベット順に処理したいのですが、最終的にはすべてのファイル名を配列に格納し、配列を並べ替えてから、for each ループを使用して処理コードをそこに配置したいのですが、どうすればよいか完全に行き詰まっています。やれ。
私はたくさんのグーグルを行ってきましたが、perl の他のすべてと同様に、すべてを実行する方法は何百もありますが、それらのどれも、私がやりたいことすべてを実行させてくれないようです。つまり、.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 でそれを行う方法はないと思います。すべてのファイルをトラバースするまで順序を知る方法がないため、後でソートを行う必要があります。