1

これは、spool/ 内のファイルを検索し、姉妹スクリプトで処理する単純なスクリプトです。次に、その結​​果を results/ に出力します。

ここに問題があります。私が書いたコードでは、rusults は results/spool/ に入りますが、それは正しくありません。それらを結果/のみに入れるにはどうすればよいですか?

出力ファイルに処理したファイル名を含めるために使用しようとしている $date_file 。/spool をそこから削除する必要があると思いますが、並べ替えることができません。

#!/usr/bin/perl -w

use POSIX;
my $date = strftime "%Y%m%d_%H%M.txt", localtime;

my @files = <spool/*.*>;
foreach $file (@files) {
    my $date_file = $file;
    system("$^X  wfreq.pl $file >> results/${date_file}_$date");
    unlink("$file");
}

私はこれで本当に新しいことを覚えておいてください...だから優しくしてください:)

4

2 に答える 2

1

File::Basename の basename() の使用を検討することもできます。

my $date_file = basename($file);

詳細はhttp://perldoc.perl.org/File/Basename.htmlを参照してください。

于 2012-10-25T15:22:59.430 に答える
1

あなたの問題は、あなたが設定したことです

my $date_file = $file

そして、あなたはに書いています

results/${date_file}

印刷してみると$date_file、 のようなものであることがわかりますspool/20121025_0000.txt。したがって、それを に連結するとresults/、なぜそれらが最終的にresults/spool

簡単な修正は言うだけです

my $date_file = substr($file, 6);

を切り取りますspool/

于 2012-10-25T04:48:12.703 に答える