gpt4 book ai didi

arrays - 检查数据结构并忽略散列或数组

转载 作者:行者123 更新时间:2023-12-02 16:08:06 25 4
gpt4 key购买 nike

我在一个数组中有一堆哈希。在检查我的键和值时,我得到了预期的输出,除了一些特殊情况,因为它们引用了更多的数组/哈希。

想想这样的事情:

@AoH = ( { 'husband' => "homer", 'wife' => "marge" },
{ 'people' => [{'Bob'=> 24, 'Lukas'=> 37}] },
{ 'vegetables' => { 'tomato' => "red", 'carrot' => "orange"} });

我的函数遍历数组并显示我的键和值,如下所示:

 sub function(...){    
print "$key => $value\n";
}

husband => homer
wife => marge
people => ARRAY(0x6b0d80)
Bob => 24
Lukas => 37
vegetables => HASH(0x2570d38)
tomato => red
carrot => orange

现在我想访问我的键和值,但是当获取像 ARRAY 或 HASH 这样的值作为值时,我想忽略该散列而不打印它。

是否有某种方法可以只访问标量类型的值?

到目前为止我试过这个:

if ($value eq 'ARRAY') {
}
elsif ($value eq ref {}) {
}
else {
print "$key => $value\n";
}

但是,它最终打印出与上面完全相同的结果,并且没有忽略其他数据结构。

最佳答案

对于像您这样的任意数据结构,您可以使用 Data::Traverse :

use warnings;
use strict;
use Data::Traverse qw(traverse);

my @AoH = ( { 'husband' => "homer", 'wife' => "marge" },
{ 'people' => [{'Bob'=> 24, 'Lukas'=> 37}] },
{ 'vegetables' => { 'tomato' => "red", 'carrot' => "orange"} });

traverse { print "$a => $b\n" if /HASH/ } \@AoH;

输出:

wife => marge
husband => homer
Bob => 24
Lukas => 37
carrot => orange
tomato => red

关于arrays - 检查数据结构并忽略散列或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68808552/

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