Perl:我可以在条件语句中为“undef”() 数组分配新值吗?

问题描述 投票:0回答:1

哦 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,我可以'不太明白为什么会这样。

arrays perl conditional-statements scope undefined
1个回答
0
投票

my @array = ();
是更长的写法
my @array;
- 它们是等价的。分配给数组会删除其之前的所有内容。

问题可能出在 ParseParamsDat 中您没有显示的某个地方。

© www.soinside.com 2019 - 2024. All rights reserved.