我想调用一个perl脚本(B.pl),它将通过传递多个可选参数来列出主要perl脚本(A.pl)中远程服务器上可用的文件。
由于参数是可选的,因此如果我使用反引号,则会将参数分配给B.pl中的错误变量。
如果我使用的@list=system(B.pl, argv0, argv1, argv2);话,尽管某些参数是undef的,但它已在B.pl中正确分配,但STDOUT未在调用脚本中分配给@list。
我是perl的新手,请在这种情况下进行指导。有没有办法通过反引号传递空参数?
在A.pl中:
my @filelist = system( B.pl, $argv0, $argv1, $argv2, $argv3);
my @filelist1 = `B.pl $argv0 $argv1 $argv2 $argv3`;
Run Code Online (Sandbox Code Playgroud)
在B.pl中:
my $loc = uc( $ARGV[0] );
my $msk = uc( $ARGV[1] );
my $usr = $ARGV[2];
my $usr1 = $ARGV[3];
Run Code Online (Sandbox Code Playgroud)
您可以在反引号内使用“零长度字符串”(""或'')作为参数:
perl -e "print `perl -e 'print $ARGV[2]' 0 '' 2`"
Run Code Online (Sandbox Code Playgroud)
或使用perl模块处理命令行选项,例如Getopt :: Std