Perl   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何读写Perl中的管道?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是一个Perl noob,所以请原谅这个基本的问题.我需要修改现有的Perl程序.我想通过外部程序管道一个字符串(可以包含多行),并读取该程序的输出.所以这个外部程序用来修改字符串.我们只需要使用cat作为过滤器程序.我尝试这样,但它不工作. (cat的输出到stdout,而不是被perl读取.)
#!/usr/bin/perl

open(messaGE,"| cat |") or die("cat failed\n");
print messaGE "Line 1\nLine 2\n";
my $message = "";
while (<messaGE>)
{
    $message .= $_;
}
close(messaGE);
print "This is the message: $message\n";

我已经读过Perl不支持它,因为它可能会陷入僵局,我可以理解它.但是我该如何做呢?

解决方法

您可以使用 IPC::Open3实现与孩子的双向通信.
use Strict;
use IPC::Open3;

my $pid = open3(\*CHLD_IN,\*CHLD_OUT,\*CHLD_ERR,'cat')
    or die "open3() failed $!";

my $r;

for(my $i=1;$i<10;$i++) {
    print CHLD_IN "$i\n";
    $r = <CHLD_OUT>;
    print "Got $r from child\n";
}

大佬总结

以上是大佬教程为你收集整理的如何读写Perl中的管道?全部内容,希望文章能够帮你解决如何读写Perl中的管道?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。