如何解决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。你要六英镑。 use strict
会提醒您正在使用$foo
,而不是@foo
。
有关一些容易记住的取消引用规则,请参见http://perlmonks.org/?node=References+quick+reference。
, 就像ysth所说的那样,您需要使用花括号将ѭ10正确解引用到它指向的数组中。
但是,您可能还想知道,使用\\@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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。