作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Perl 的新手,正在努力适应 Perl 中的数据结构和引用。
我学会了
key %hash
返回 %hash
\{ @array }
返回对 @array
所以我把这两个结合起来写了这样的东西,
use strict;
use warnings;
use Data::Dumper;
my $hash = {
key1 => 'value1',
key2 => 'value2'
};
my $keys = \{ keys %$hash }; # Supposed to be an array reference?
print Dumper $keys; # Output 1
print Dumper $keys->[0]; # Output 2
在 Output 2
的行产生错误 Not an ARRAY reference
。此外,Output 1
显示了一些看起来像散列引用的内容,尽管它应该是数组引用。
我的代码有什么问题?
类似地,以下代码无法正常工作,出现相同的错误。
use strict;
use warnings;
my $array = [1, 2, 3, 4, 5];
my $first_two = \{ @{ $array }[0..1] }; # Isn't it an array ref?
my $first = $first_two->[0];
我想我对数组引用有一些误解。
最佳答案
您遇到的问题是这是不正确的:'\{ @array } 返回对@array'
的引用。相反,\
只是简单地添加到现有变量之前,例如:\@array
。大括号 {}
用于创建匿名 hash 引用,方括号 []
用于创建匿名数组 引用.
在您的示例中,您想要做的是 (1) 将键存储为数组,然后使用 \
获取引用:
my @keys = keys %$hash;
my $keys = \@keys;
或者(2)使用匿名数组引用:
my $keys = [ keys %$hash ];
这是一个很好的“引用”;)https://perldoc.perl.org/perlref.html#Making-References
关于perl - Perl 中的 "Not an ARRAY reference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551986/
我是一名优秀的程序员,十分优秀!