【发布时间】:2011-10-26 17:53:50
【问题描述】:
我有以下代码:
my @array = ('a', 'b', 'c');
my $region = \@array; # Returns an array reference
my $Value = ${@{$region}}[3];
我使用的是严格的;
这段代码在 Perl v5.8.6 中顺利通过,现在我安装了 v5.10.1,出现运行时错误:
不能将字符串 ("4") 用作 ARRAY 引用,而 "strict refs" 用于 ...
我将代码更改为以下,这解决了问题:
my @array = ('a', 'b', 'c');
my $region = \@Array;
my @List = @{$region};
my $Value = $List[3];
我的问题是,以前的方式有什么问题?这两个版本之间有什么变化? 我在这里错过了什么?
谢谢, 加尔
【问题讨论】:
-
另外我认为问题是......您的区域包含 4 个元素,而不是在返回 4 的列表上下文中评估 @{$region} 并且您的调用变为: $Value = ${ '4'}[3] 产生错误
-
为什么要一直引用代码中长度为三个元素的列表中的第 4 个元素?
标签: arrays perl reference strict