假设我有这样的哈希:
$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'
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能尽可能容易地找到包含3个键/值对的hashes3个哈希keys值?
ref将返回HASH他们两个,我不知道是否有可能找出这些哈希的深度.
谢谢 :)
如果您只需要知道散列是否是多维的,则可以迭代其值并在找到引用时停止:
my $is_multi_dimensional = 0;
for my $value (values %$hash_ref) {
if ('HASH' eq ref $value) {
$is_multi_dimensional = 1;
last;
}
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用这个each()功能:
while (my (undef, $value) = each %$hash_ref) {
if ('HASH' eq ref $value) {
$is_multi_dimensional = 1;
last;
}
}
Run Code Online (Sandbox Code Playgroud)
use List::Util 'first';
say 'is multi-dimensional' if first { ref } values %$hash_ref;
# explicitly check for HASH ref this time
my $how_many_md_hashes = grep { 'HASH' eq ref } values %$hash_ref;
Run Code Online (Sandbox Code Playgroud)
NB.first(List::Util核心模块的一部分)短路因此是条件的理想选择,可能是所有可能选项中最快的.
/ I3az /
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |