perl使用选项/开关调用另一个perl脚本

时间:2018-07-21 00:01:44

标签: perl

我有一个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。

2 个答案:

答案 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`'