将perl中的系统调用输出保存到文本文件中

时间:2012-10-25 00:29:05

标签: perl date foreach text-files

我试图让这个脚本将输出文件放在results /中但我只在结果/ 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");
}

2 个答案:

答案 0 :(得分:2)

你测试过这个吗?

#!/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) =~ s!.*/!!;
    system("$^X  wfreq.pl $file >> results/${date_file}_$date");
    unlink("$file");
}

函数system()qx()&amp; exec()可以毫无问题地处理变量。

答案 1 :(得分:0)

这是你想要的吗?

这将为每个日期提供单独的文件

@files = <spool/*.*>;
foreach $file (@files) {
    system($^X, "wfreq.pl", $file);
    $DATE = strftime "%Y%m%d";
    open OUTPUT, '>results/$DATE.txt' or die;
    print OUTPUT $DATE;
}

或者将结果全部存储在一个文本文件中的文件

@files = <spool/*.*>;
open OUTPUT, '>>results/results.txt' or die;
foreach $file (@files) {
    system($^X, "wfreq.pl", $file);
    $DATE = strftime "%Y%m%d";
    print OUTPUT $DATE;
}