Tyz*_*zak 4 perl system return-value backticks
我有一个perl脚本,通过使用system()调用其他perl脚本
就像是:
my $returnval= system("perl", $path,$val1, $val2,@myarray);
Run Code Online (Sandbox Code Playgroud)
因为system()只返回退出状态,但我想要脚本的输出,我想使用反引号.
我试过这样的事情:
my $returnval = `$path`;
Run Code Online (Sandbox Code Playgroud)
如何添加脚本应该接收的参数?
其他perl脚本的返回代码应该怎么样?目前它就像
exit ($myreturnedvalue);
Run Code Online (Sandbox Code Playgroud)
(如何)是否可以返回多个值?
通过shell来将数据从一个perl脚本移动到另一个脚本不是最好的解决方案.您应该知道反引信或qx()捕获打印到STDOUT的任何内容.使用exit ($var)其他脚本不太可能正确捕获.你需要print $var.但是不要这样做.
相反,将另一个脚本放入模块并直接使用子例程.这是一个简单的例子:
在bar.pm:
use strict;
use warnings;
package bar; # declare our package
sub fooz { # <--- Our target subroutine
my $in = shift; # passing the input
return $in * 5; # return value
}
1; # return value must be true
Run Code Online (Sandbox Code Playgroud)
在main.pl中:
use strict;
use warnings;
use bar; # bar.pm must be in one path in @INC
my $foo = bar::fooz(12); # calling fooz from our other perl script
print "Foo is $foo\n";
Run Code Online (Sandbox Code Playgroud)
还有很多东西需要学习,我建议您阅读文档.