管道Perl命令?

时间:2013-04-03 04:19:18

标签: perl unix piping

我目前正在尝试接受我的程序并接受用户输入,通常是文本文件,然后调用外部脚本来计算单词。我正在处理的脚本本质上是一个“中间人”,我正在尝试更熟悉外部脚本/命令的管道。它目前没有正确执行单词计数器脚本。这是代码:

我仍然收到错误./word_counter.pl说“没有这样的文件或目录在glue.pl(这是你在这里看到的脚本)”。

#!usr/bin/perl
use warnings;
use strict;
use IO::Handle qw();

open (PIPE_TO, "|-", "./word_counter.pl");
While(<>)
{
$PIPE_TO -> autoflush(1);
print PIPE_TO $_;

}

3 个答案:

答案 0 :(得分:1)

遭受缓冲?

use IO::Handle qw( );
PIPE_TO->autoflush(1);

答案 1 :(得分:0)

它不起作用的原因可能是你有语法错误。

否则:除了引入行缓冲语义之外,你实际上在这里什么都不做(你只是将你读到的内容传递给另一个程序,在这种情况下只相当于运行程序)

模数缓冲(您似乎并不明确需要),等效脚本将是:

#!/usr/bin/perl

exec ("./word_counter.pl");

答案 2 :(得分:0)

这是你想要做的吗?

#!/usr/bin/perl
use warnings;
use strict;

open (my $PIPE_TO, "|-", "./word_counter.pl") or die $!;
while(<>) {
  print $PIPE_TO $_;
}