所以,我有json的这个例子:
{
"tab" : {
"sort" : "true",
"sort_by" : "0",
"name" : "blablabla",
"cols" : [
"time_ep",
"count_warning",
"count_critical"
]
}
}
在我将其解码为perl hash之后,我遇到了" cols"阵列。
print Dumper ${$params->{$tab}}{cols}
看起来像那样
$VAR1 = [
'time_ep',
'count_warning',
'count_critical'
];
我找不到这个数组的大小。当我尝试这样做时 - 它会返回1
或ARRAY(adress)
,但是当我尝试获取这样的数组元素时:
print Dumper ${$params->{$tab}}{cols}[1]
- 我得到了我需要的东西:
$VAR1 = 'count_warning';
我尝试使用refs的各种选项,但没有什么能给我我需要的东西。 有什么建议吗?
答案 0 :(得分:4)
获取cols
的大小:
print scalar @{$params->{tab}->{cols}};
您正在从此键检索数组引用,取消引用它以获取数组,然后在标量上下文中使用它 - 它返回数组的大小。
#!/usr/bin/env perl
use strict;
use warnings;
use JSON;
use Data::Dumper;
my $params = from_json(
'{
"tab" : {
"sort" : "true",
"sort_by" : "0",
"name" : "blablabla",
"cols" : [
"time_ep",
"count_warning",
"count_critical"
]
}
}'
);
print Dumper $params;
print scalar @{ $params->{tab}->{cols} }
注意 - scalar
明确强制标量上下文,但如果你进行标量操作,它会隐式发生。像连接或数字比较。 (print
不强制标量上下文)