Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用perl的qx {} /`…`运算符和参数列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
system,exec,open’| – ‘,open2等都允许我指定命令作为参数列表运行,这些参数将直接传递给execvp而不是通过 shell运行.

即使perl足够聪明,如果它看起来像一个“简单”的命令,也可以直接运行它,这样可以省去正确的sHell逃避参数所带来的所有令人讨厌的陷阱的麻烦.

例:

open my $out,'|-',$prog,@args;
system $prog,@args;
exec $prog,@args;

代替

open my $out,"|$prog @args";
system "$prog @args";
exec "$prog @args";

qx //运算符是否有这样的等价物?或者你必须总是手工完成,例如.

sub slurpcmd {
   open my $h,'-|',@_ or die "open $_[0]|: $!";
   local $/ unless wantarray;
   <$h>
}

解决方法

模块 IPC::System::Simple提供qx运算符的列表形式作为函数capturex(另外与该模块中的其他函数一样,如果存在执行错误或非零响应代码,它将抛出异常,您可以调整它) .或者,您可以使用 Capture::Tiny来包装核心系统调用并提供相同的行为,但它也有其他功能可以将STDERR包装在一起或与STDOUT分开.
use Strict;
use warnings;
use IPC::System::Simple 'capturex';
my $output = capturex $prog,@args;

use Capture::Tiny 'capture_stdout';
my ($output,$exit) = capture_stdout { system $prog,@args };
# standard system() error checking required here

在核心中,管道打开在很大程度上是唯一的选择,除了IPC::Open3,它同样复杂但也允许指向STDERR.

大佬总结

以上是大佬教程为你收集整理的使用perl的qx {} /`…`运算符和参数列表全部内容,希望文章能够帮你解决使用perl的qx {} /`…`运算符和参数列表所遇到的程序开发问题。

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

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