是否可以从Perl运行外部进程,捕获其stderr,stdout和进程退出代码?
我似乎能够组合这些,例如使用反引号来获取stdout,使用IPC :: Open3来捕获输出,使用system()来获取退出代码.
你如何一次捕获stderr,stdout和退出代码?
我想捕获外部命令的退出代码,同时用自定义错误消息替换其标准错误输出.
my $ret = system("which mysql");
if ($ret != 0) {
say "Error";
}
Run Code Online (Sandbox Code Playgroud)
如果mysql不存在可执行文件,则会显示which命令错误消息,这是我不想要的.如何摆脱它?
我正在编写一个Perl脚本,我在其中读取包含Perl代码段和非Perl数据的文件.
处理完文件后,我将它们写入临时文件(生成的脚本),然后使用eval命令执行.我不想单独运行生成的脚本,因为我需要使用主脚本中的变量在生成的脚本中进行插值.
我需要将eval命令的输出重定向到文件.有关如何实现这一目标的任何建议?
脚本中的步骤:
READ_FILE
处理文件
使用临时文件名回写
读临时文件(my $file_name = read_file('temp_file_name'))
eval(eval $file_name)
感谢帮助.
例如,如果我的脚本如下:
#! /bin/perl
use strict;
use warnings;
system('echo schwifty')
Run Code Online (Sandbox Code Playgroud)
- 我可以将我的终端(schwifty)上的输出变成一个字符串,我可以继续使用我的脚本吗?
注意:"echo"仅作为示例给出我正在使用其他打印到屏幕的命令.