Perl,使输出到达应有的位置

时间:2012-10-25 03:31:59

标签: perl foreach

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

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

$ date_file我一直试图使输出文件包含它已处理的文件名。所以我猜测应该有一些东西要从中移除/假脱机,但是我无法对它进行排序。

#!/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");
}

请记住,我真的很新......所以要温柔:)

2 个答案:

答案 0 :(得分:1)

你的问题是你设置

my $date_file = $file

然后你写信给

results/${date_file}

如果您尝试打印$date_file,您会发现它类似于spool/20121025_0000.txt。因此,当您将其连接到results/时,您可以看到他们为什么最终会进入results/spool

简单的解决就是说

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

剪掉spool/

答案 1 :(得分:1)

您还可以考虑使用File :: Basename的basename()。

my $date_file = basename($file);

http://perldoc.perl.org/File/Basename.html的更多信息。