Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 是否可能检测具有多个密钥的哈希?_Perl - Fatal编程技术网

Perl 是否可能检测具有多个密钥的哈希?

Perl 是否可能检测具有多个密钥的哈希?,perl,Perl,我正在收集散列中的数据,看起来像 $VAR1 = { '502' => { 'user2' => '0' }, '501' => { 'git' => '0', 'fffff' => '755' }, '19

我正在收集散列中的数据,看起来像

$VAR1 = {
          '502' => {
                     'user2' => '0'
                   },
          '501' => {
                     'git' => '0',
                     'fffff' => '755'
                   },
          '19197' => {
                       'user4' => '755'
                     }
        };
问题出在
501
中。可能不会出现两个键。有可能检测到这一点吗

更新 修复了散列中的键入错误。

键(%{$VAR1{'501'})==2
,其余为1


另外,该键上存在语法错误,但我认为这是一个输入错误。

假设上面的hashref名为$var:

结果是一个哈希键数组,其中包含多个hashref。使用上述数据:

# perl test.pl
$VAR1 = {
          '501' => {
                     'git' => '0',
                     'fffff' => '755'
                   },
          '502' => {
                     'user2' => '0'
                   },
          '19197' => {
                       'user4' => '755'
                     }
        };
$VAR1 = '501';
然后,您可以通过以下方式访问检测为坏的每个元素:

foreach my $key ( @bad ) {
  # do something to or with $var->{$key}
}

如果您只打算在主散列的每个键下存储一个键值对,为什么不使用2元素数组呢?这样,您就可以在进行每个新插入之前检查是否存在,而无需检查哈希的大小或知道其键是什么。我提议的结构是:

$VAR1 = {
    '502' => [ 'user2', '0' ],
    '501' => [ 'git', '0' ],
    '19197' => [ 'user4', '755' ]
}

似乎您应该能够执行类似于
foreach VAR1 as k,v(如果count(v){echo'k is duplicate'}
。但是我不知道这方面的perl语法。是否要将嵌套哈希(git,fffff)存储为键“501”的值?您应该仍然有
,因此它是
键(%{$VAR1{501'}})==2
这是一个非常优雅的设计解决方案。我下次会这么做!谢谢=)
$VAR1 = {
    '502' => [ 'user2', '0' ],
    '501' => [ 'git', '0' ],
    '19197' => [ 'user4', '755' ]
}