1

这是一个简单的脚本,它在 spool/ 中查找文件,然后使用姊妹脚本处理它们。然后我希望它把结果输出到 results/.

这是问题所在,我编写的代码将结果放入结果/假脱机/中,这是不对的。我怎样才能让他们进入结果/只?

我一直试图用来使输出文件包含它已处理的文件名的 $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 回答