gpt4 book ai didi

perl IPC :Open3 minimal to pass perlcritic?

转载 作者:行者123 更新时间:2023-12-04 22:57:00 26 4
gpt4 key购买 nike

我正在阅读 perlcritic 文档以避免反引号并在此处使用 IPC::Open3:

http://perl-critic.stacka.to/pod/Perl/Critic/Policy/InputOutput/ProhibitBacktickOperators.html

我试图找到最不冗长的选项,它将起作用并满足 perlcritic:

#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open3 'open3'; $SIG{CHLD} = 'IGNORE';
my $cmd = 'ls';
my ($w,$r,$e); open3($w,$r,$e,$cmd);
my @o = <$r>; my @e = <$e>;
1;

但它提示以下错误:
Use of uninitialized value in <HANDLE> at ipc_open3.pl line 7

有任何想法吗?

编辑:好的,这就是我所拥有的。除非有办法简化它,否则我会坚持这一点:
#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open3 'open3'; $SIG{CHLD} = 'IGNORE';
use Symbol 'gensym';
my $cmd = 'ls';
my ($w,$r,$e) = (undef,undef,gensym); my $p = open3($w,$r,$e,$cmd);
my @o = <$r>; my @e = <$e>;
1;

最佳答案

该页面上的建议很糟糕。 IPC::Open3 是一个难以使用的低级模块。如果将批处理发送到 STDERR,页面建议的代码将挂起(死锁)。

使用IPC::Run3IPC::Run反而。

例子:

run3 $cmd, undef, \my $out, \my $err;
run3 [ $prog, @args ], undef, \my $out, \my $err;
run3 [ $prog, @args ], undef, \my @out, \my @err;

关于perl IPC :Open3 minimal to pass perlcritic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com