将参数传递给来自Perl的子脚本

问题描述:

我有一个perl脚本,我将其用作包装器。 perl脚本从用户收集参数,然后使用参数作为数组调用子脚本。将参数传递给来自Perl的子脚本

我遇到的问题是,当执行子脚本时,所有参数都在ARGV [1]中。是否有一些我可以使用的特殊分隔符?我真的不想在子脚本中循环一个数组;有种失败的目的。

[KSH脚本]

Your Args 
ARG1: foo bar 
ARG2: 

但是我期待的结果是

Your Args 
ARG1: foo 
ARG2: bar 

我有推参数到一个数组和提供的参数作为所述阵列。

[Perl的脚本]

print "Enter $arg_array[$i]: "; 
my $value = <STDIN>; 
chomp $value; 
if (defined $value) { 
    push (@arg_entry, "$value"); #create args array to pass to selectd script 

    } 
    .... sometime later, in another function ...... 

    system("$select_script", "@arg_entry"); 

随着system要么传递一个字符串,将与一个外壳来解释(和服从的参数由空格分开):

system 'command arg1 arg2'; 

或者你使用多个参数,就像你一样。在这种情况下,第一个参数是程序,以下每个参数都是参数。

system 'command', 'arg1', 'arg2'; 

所以,既然你参加了所有的参数由一个字符串插值他们(与“@arg_entry”),那么他们给予为一体。解决方案很简单,只是不插入,它们将正常插入参数列表中。

system 'command', @args; 
system($select_script, @arg_entry); 
+2

谢谢!我到达了互联网的尽头,寻找替代品来调用它。 第三代码块的第一行是答案! – Autonomic

+0

@JeremyWinslow很高兴它整理出来。顺便说一句,“'$ select_script”'和'“$ value”'的插值完全不需要,你可以直接使用这个变量。 – sidyll

+4

@JeremyWinslow在那里很黑吗? – simbabque