哦 Perl...我希望初始化一个数组——我想它可以定义为:
my @array = ();
在此定义之后有一些条件语句,我想用它们为该数组重新分配新值(见下文)。 (通常我是一个沉默的潜伏者,请原谅任何简洁)
sub function {
my ($dir,$type) = @_;
my @array = ();
if ($type eq "bar"){
@array = ParseParamsDat("$dir/F2cos2_SS.dat");
if ($array[0] > 0.01) {
@array = ParseParamsDat("$dir/F2cos2.dat");
}
}
elsif ($type eq "baz"){
@array = ParseParamsDat("$dir/F2cos2.dat");
}
else{
die "Only types bar and baz supported. Stopping."
}
return @array;
}
$type
被定义为在此函数之外的 bar
或 baz
,并且看起来工作正常。我希望这段代码根据外部条件(例如 $type!)为 @array 重新分配一个值,但代码永远不会消失,也不会为 @array 分配任何一个值 - 不是 F2cos2_SS.dat 也不是 F2cos2.dat,我可以'不太明白为什么会这样。
my @array = ();
是更长的写法 my @array;
- 它们是等价的。分配给数组会删除其之前的所有内容。
问题可能出在 ParseParamsDat 中您没有显示的某个地方。