我有一个Perl主脚本,需要使用选项调用另一个Perl脚本。我读了许多关于参数的主题,但是我需要参数和选项。下面是我的示例代码:
sub run_script_a{
my $script_path = "/home/sample/script.pl"
my @ARGS = "input.txt";
##I need to capture the result of the script run and fail if something went wrong
system($^X, $tool_path, @ARGS);
}
我尝试了以下操作:
my @ARGS = "input.txt -o output.txt";
它不起作用,给了我这个错误:
Cannot open input.txt -o output.txt for read: No such file or directory
我如何使其工作?第二个脚本的运行方式为:
sample.pl input.txt -o output.txt
我不擅长编写bash脚本,因此我正在使用Perl。
答案 0 :(得分:3)
my $tool_path = "/home/sample/script.pl"
my @args = "input.txt -o output.txt";
system($tool_path, @args);
等同于shell命令
/home/sample/script.pl "input.txt -o output.txt"
你想要
my $tool_path = "/home/sample/script.pl"
my @args = ( "input.txt", "-o", "output.txt" );
system($tool_path, @args);
实际上,如果要捕获输出,则无需包含文件。你想要
use IPC::System::Simple qw( capturex );
my $tool_path = "/home/sample/script.pl"
my @args = "input.txt";
my $output = capturex($tool_path, @args);
答案 1 :(得分:0)
使用反引号运行带有参数的脚本并捕获输出(perldoc -f qx)。
'
script.pl的内容:
perl -E'say `echo 4 | $^X -p ./script.pl`'