gpt4 book ai didi

perl - 为什么 Perl 的 shift 会提示 'Type of arg 1 to shift must be array (not grep iterator).' ?

转载 作者:行者123 更新时间:2023-12-04 02:34:25 24 4
gpt4 key购买 nike

我有一个数据结构,它是一个包含散列数组的散列。我想到达那里并拉出与我正在寻找的值相匹配的第一个哈希值。我试过这个:

   my $result = shift grep {$_->{name} eq 'foo'} @{$hash_ref->{list}};

但这给了我这个错误: Type of arg 1 to shift must be array (not grep iterator).我重新阅读了 perldocgrep我认为我在做的事情是有道理的。 grep返回一个列表,对吗?是在错误的上下文中吗?

我现在将使用一个临时变量,但我想弄清楚为什么这不起作用。

最佳答案

A list isn't an array .

my ($result) = grep {$_->{name} eq 'foo'} @{$hash_ref->{list}};

......不过应该完成这项工作。从列表上下文中的 grep 返回,但不要分配除第一个以外的任何值。

关于perl - 为什么 Perl 的 shift 会提示 'Type of arg 1 to shift must be array (not grep iterator).' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2534759/

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