Perl的嵌套数组疑难解答



我的引用数组指向另一个数组时遇到问题。以下是我的代码片段:

# @bah is a local variable array that's been populated, @foo is also initialized as a global variable
$foo[9] = @bah; 
# this works perfectly, printing the first element of the array @bah
print $foo[9][0]."n"; 
# this does not work, nothing gets printed
foreach (@$foo[9]) {
    print $_."n";
}

始终为use strict;use warnings;

@解引用优先,因此@$foo[9]期望$foo是数组引用,并从该数组中获取元素9。您需要@{$foo[9]}use strict会提醒您正在使用$foo,而不是@foo

有关一些易于记忆的取消引用规则,请参阅http://perlmonks.org/?node=References+快速+参考。

正如ysth所说,您需要使用大括号将$foo[9]正确地解引用到它所指向的数组中。

但是,您可能还需要注意,使用@bah是在直接引用数组。因此,如果稍后更改@bah,您也将更改$foo[9]

my @bah = (1,2,3);
$foo[9] = @bah;
@bah = ('a','b','c');
print qq(@{$foo[9]});

这将打印a b c,而不是1 2 3

只复制@bah中的值,而取消引用$foo:

@{$foo[9]} = @bah;

相关内容

  • 没有找到相关文章

最新更新