私はこれについて完全な初心者ですが、すべての助けに感謝します。このスクリプトを実行して、特定のシーケンスに一致する日付付きサブディレクトリ内の文字列を検索し、結果を新しいファイルに出力しています。サブディレクトリの名前は「20110101」、「20110102」、「20110103」などです。文字列はうまく検出されますが、新しいファイルに出力するときに順序が乱れます。20110107 の前に 20110129 を出力します。これを修正して、サブディレクトリにある順序で文字列を出力するにはどうすればよいですか? 助けてくれてありがとう。
use strict;
use warnings;
use File::Find;
my $starting_path = "/d2/aschwa/test";
open my $output, '>>', 'KDUX_METARS.txt' or die $!; #open file to write data
print STDOUT "Finding METAR files\n";
find(
sub {
return unless -e -f;
if ( open my $infile, '<', $_ ) {
while ( my $line = <$infile> ) {
print $output $line if $line =~ m/(KDUX ....05Z|KDUX ....55Z)/;
}
}
else {
warn "$_ couldn't be opened: $!";
}
},
$starting_path
);
close $output or die $!;