在带参数的 perl 脚本中执行 perl 脚本
Execute a perl script within a perl script with arguments
当我尝试在我的 perl 脚本中执行 perl 脚本时遇到问题。这是我正在进行的一个更大项目的一小部分。
下面是我的 perl 脚本代码:
use strict;
use warnings;
use FindBin qw($Bin);
#There are more options, but I just have one here for short example
print "Please enter template file name: "
my $template = <>;
chomp($template);
#Call another perl script which take in arguments
system($^X, "$Bin/GetResults.pl", "-templatefile $template");
"GetResults.pl"接受多个参数,我这里只举一个例子。基本上,如果我要单独使用 GetResults.pl 脚本,我会在命令行中键入:
perl GetResults.pl -templatefile template.xml
我在上面的系统函数调用中遇到了两个问题。首先,当我 运行 我的 perl 脚本导致 GetResults.pl.
中的无效参数错误时,它似乎删除了我的参数前面的破折号
然后我试了这个
system($^X, "$Bin/GetResults.pl", "/\-/templatefile $template");
它似乎没问题,因为它没有抱怨之前的问题,但现在它说它找不到 template.xml,尽管我将该文件与我的 perl 脚本和 GetResults.pl 脚本。如果我只是 运行 GetResults.pl 脚本,它工作正常。
我想知道当我使用变量 $template 和位于我的 PC 上的真实文件名(我正在使用 Window 7)时,字符串比较是否存在问题。
我是 Perl 的新手,希望有人能提供帮助。提前谢谢你。
将参数作为数组传递,就像对任何其他程序一样(Perl 脚本并不特殊;它是 Perl 脚本是一个实现细节):
system($^X, "$Bin/GetResults.pl", "-templatefile", "$template");
您可以将所有内容排成一个数组并使用它:
my @args = ("$Bin/GetResults.pl", "-templatefile", "$template");
system($^X, @args);
或者甚至将 $^X
添加到 @args
。等等
当我尝试在我的 perl 脚本中执行 perl 脚本时遇到问题。这是我正在进行的一个更大项目的一小部分。
下面是我的 perl 脚本代码:
use strict;
use warnings;
use FindBin qw($Bin);
#There are more options, but I just have one here for short example
print "Please enter template file name: "
my $template = <>;
chomp($template);
#Call another perl script which take in arguments
system($^X, "$Bin/GetResults.pl", "-templatefile $template");
"GetResults.pl"接受多个参数,我这里只举一个例子。基本上,如果我要单独使用 GetResults.pl 脚本,我会在命令行中键入:
perl GetResults.pl -templatefile template.xml
我在上面的系统函数调用中遇到了两个问题。首先,当我 运行 我的 perl 脚本导致 GetResults.pl.
中的无效参数错误时,它似乎删除了我的参数前面的破折号然后我试了这个
system($^X, "$Bin/GetResults.pl", "/\-/templatefile $template");
它似乎没问题,因为它没有抱怨之前的问题,但现在它说它找不到 template.xml,尽管我将该文件与我的 perl 脚本和 GetResults.pl 脚本。如果我只是 运行 GetResults.pl 脚本,它工作正常。
我想知道当我使用变量 $template 和位于我的 PC 上的真实文件名(我正在使用 Window 7)时,字符串比较是否存在问题。
我是 Perl 的新手,希望有人能提供帮助。提前谢谢你。
将参数作为数组传递,就像对任何其他程序一样(Perl 脚本并不特殊;它是 Perl 脚本是一个实现细节):
system($^X, "$Bin/GetResults.pl", "-templatefile", "$template");
您可以将所有内容排成一个数组并使用它:
my @args = ("$Bin/GetResults.pl", "-templatefile", "$template");
system($^X, @args);
或者甚至将 $^X
添加到 @args
。等等