2017-03-16 33 views
1

所以找一個大小的數組的哈希,我有JSON的這個例子:Perl中,如何從JSON

{ 
     "tab" : { 
      "sort" : "true", 
      "sort_by" : "0", 
      "name" : "blablabla", 
      "cols" : [ 
       "time_ep", 
       "count_warning", 
       "count_critical" 
      ] 
     } 
    } 

後,我解碼成Perl中的哈希,我買了「的cols」陣列問題。 的print Dumper ${$params->{$tab}}{cols}看起來像

$VAR1 = [ 
      'time_ep', 
      'count_warning', 
      'count_critical' 
     ]; 

我找不到這個數組的大小。當我試圖做到這一點 - 它返回1ARRAY(adress),但是當我試圖讓這樣的陣列的單元素: print Dumper ${$params->{$tab}}{cols}[1] - 我得到了我需要的:

$VAR1 = 'count_warning'; 

我試圖與裁判的各種選項,但沒有給我我需要的東西。 有什麼建議嗎?

+0

http://perlmonks.org/?node=References+quick+reference – ysth

回答

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不強制標量上下文)

+0

我就這麼接近!謝謝你,兄弟! – genesi5