加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何确定Perl哈希是否是多维的?

发布时间:2020-12-15 21:47:41 所属栏目:大数据 来源:网络整理
导读:假设我有这样的哈希: $hash_ref = { 'hashes' = { 'h1' = { 'klf' = '1','moomooland' = '1' },'h2' = { 'klf' = '2','moomooland' = '2' },'h3' = { 'klf' = '3','moomooland' = '3' } },'keys' = { 'k1' = 'key1','k2' = 'key2','k3' = 'key3' }} 我怎么
假设我有这样的哈希:
$hash_ref = {

  'hashes' => {
    'h1' => { 'klf' => '1','moomooland' => '1' },'h2' => { 'klf' => '2','moomooland' => '2' },'h3' => { 'klf' => '3','moomooland' => '3' }
  },'keys' => {
    'k1' => 'key1','k2' => 'key2','k3' => 'key3'
  }

}

我怎么能尽可能容易地发现哈希包含3个以上的哈希值,而键包含3个键值/值对?

ref会为它们返回HASH,我不确定是否有可能找出这些哈希的深度.

谢谢 :)

解决方法

如果您只需要知道散列是否是多维的,则可以迭代其值并在找到引用时停止:
my $is_multi_dimensional = 0;

for my $value (values %$hash_ref) {
    if ('HASH' eq ref $value) {
        $is_multi_dimensional = 1;
        last;
    }
}

或者你可以使用each()函数:

while (my (undef,$value) = each %$hash_ref) {
    if ('HASH' eq ref $value) {
        $is_multi_dimensional = 1;
        last;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读