如果我这样做:
foreach my $comp (@compList){
print $comp .= "\n";
@component_dirs = DoStuff($comp);
}
我的输出很简单:
String1
String2
String3
...
但是,一旦我进入方法DoStuff()
,我就会这样做:
sub DoStuff{
my $strComponentName = @_;
print "\t$strComponentName\n";
}
这样,我的输出变为
String1
1
String2
1
String3
1
...
为什么?
答案 0 :(得分:3)
您正在将数组@_
指定给标量$strComponentName
。
在标量上下文中,数组的结果是数组中元素的数量。
在你的情况下它是1,因为你用一个参数调用DoStuff
。
要实际获取参数,您必须编写
my ($strComponentName) = @_;
这将为数组分配一个数组,其中左数组中的第一个变量将包含右数组的第一个元素。
答案 1 :(得分:3)