gpt4 book ai didi

perl - Perl 中的 "Not an ARRAY reference"

转载 作者:行者123 更新时间:2023-12-05 01:04:54 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com