我有以下代码:
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参考号。
我将代码更改为以下内容,这解决了问题:
my @array = ('a', 'b', 'c');
my $region = \@Array;
my @List = @{$region};
my $Value = $List[3];
我的问题是,以前的方式出了什么问题?这两个版本之间有什么变化? 我在这里缺少什么?
谢谢, 伽
答案 0 :(得分:11)
${@{$region}}[3]
永远不是访问arrayref的正确方法。我不太确定它的意思,我不认为Perl是(因此在不同版本的Perl中的行为不同)。
perlref中解释了正确的方法:
my $Value = ${$region}[3]; # This works with any expression returning an arrayref
my $Value = $$region[3]; # Since $region is a simple scalar variable,
# the braces are optional
my $Value = $region->[3]; # This is the way I would do it
答案 1 :(得分:2)
我就是这样做的:
my @array = ('a', 'b', 'c');
my $region = \@array;
my $Value = $$region[1];
print $Value;
输出:
b