将参数传递给来自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);
谢谢!我到达了互联网的尽头,寻找替代品来调用它。 第三代码块的第一行是答案! – Autonomic
@JeremyWinslow很高兴它整理出来。顺便说一句,“'$ select_script”'和'“$ value”'的插值完全不需要,你可以直接使用这个变量。 – sidyll
@JeremyWinslow在那里很黑吗? – simbabque