2015-01-06 5 views
0

Я получаю структуру данных ниже в качестве ответа от вызова веб-службы.Извлечение данных из многоуровневого хэша

my $triggers1 = $zabbix->raw('trigger','get', $options1); 
print Dumper($triggers1); 

Выход

  $VAR1 = { 
        '10305122' => { 
         'hosts' => [ 
            { 
            'name' => 'pc4b12cf254444', 
            'maintenance_type' => '0', 
            'hostid' => '19295' 
            } 
           ], 
         'priority' => '1', 
         'status' => '0', 
         'dependencies' => [], 
         'templateid' => '9892568', 
         'comments' => '', 
         'state' => '0', 
         'triggerid' => '10305122', 
         'expression' => '{14127122}=0', 
         'error' => '', 
         'url' => '', 
         'flags' => '0', 
         'value' => '0', 


        } 


      324234' => { 
         'hosts' => [ 
            { 
            'name' => 'pc45657ba34gy0423', 
            'maintenance_type' => '0', 
            'hostid' => '19439' 
            } 
           ], 
         'priority' => '1', 
         'status' => '0', 
         'dependencies' => [], 
         'templateid' => '9896452', 
         'comments' => '', 
         'state' => '0', 

         'triggerid' => '10324234', 
         'expression' => '{14167689}=0', 
         'error' => '', 
         'url' => '', 
         'flags' => '0', 
         'value' => '0', 
         'value_flags' => '0', 
         'lastchange' => '1420266068', 
         'type' => '0' 

    }; 

и т.д.

Есть несколько похожих записей

Из этого вывода, я хочу, чтобы напечатать значения 'имя' и 'значение'.

Как напечатать это с помощью Perl?

ответ

0

Как насчет:

my $triggers1 = { 
       '10305122' => { 
        'hosts' => [ 
           { 
           'name' => 'pc4b12cf254444', 
           'maintenance_type' => '0', 
           'hostid' => '19295' 
           } 
          ], 
        'priority' => '1', 
        'status' => '0', 
        'dependencies' => [], 
        'templateid' => '9892568', 
        'comments' => '', 
        'state' => '0', 
        'triggerid' => '10305122', 
        'expression' => '{14127122}=0', 
        'error' => '', 
        'url' => '', 
        'flags' => '0', 
        'value' => '0', 


       }, 


     324234 => { 
        'hosts' => [ 
           { 
           'name' => 'pc45657ba34gy0423', 
           'maintenance_type' => '0', 
           'hostid' => '19439' 
           } 
          ], 
        'priority' => '1', 
        'status' => '0', 
        'dependencies' => [], 
        'templateid' => '9896452', 
        'comments' => '', 
        'state' => '0', 

        'triggerid' => '10324234', 
        'expression' => '{14167689}=0', 
        'error' => '', 
        'url' => '', 
        'flags' => '0', 
        'value' => '0', 
        'value_flags' => '0', 
        'lastchange' => '1420266068', 
        'type' => '0' 

} 
}; 

кодекса отключенного от данных для читаемости:

foreach my $k (keys %$triggers1) { 
    print "key=$k"; 
    foreach my $h (@{$triggers1->{$k}{hosts}}) { 
     print "\nname=",$h->{name} // 'not defined'; 
     //    use this ^^ to avoid Use of uninitialized value in print at 
    } 
    print "\nvalue=",$triggers1->{$k}{value} // 'not defined',"\n"; 
} 

Выход:

key=324234 
name=pc45657ba34gy0423 
value=0 
key=10305122 
name=pc4b12cf254444 
value=0 
+0

Круто. Он напечатал ключ и значение. для оператора печати для имени, он дал эту ошибку. Использование неинициализированного значения в печати –

+0

@SandeepMadhu: см. мое редактирование. Используйте 'print" \ nname = ", $ h -> {name} // 'not defined';' – Toto

+0

Для этого оператора я получаю сообщение об ошибке «Нечетное число элементов в анонимном хеше» my $ options1 = {'nodeids' => '0', 'triggerids' => 324234, 'output' => 'extend', 'selectHosts' => {'name', 'hostid', 'maintenance_status', 'maintenance_type', 'maintenanceid', 'description '},' selectItems '=> {' itemid ',' hostid ',' key _ ',' name ',' value_type '},' selectDependencies '=>' extend ',' selectLastEvent '=>' 1 ',' expandDescription '=>' 1 ',' preservekeys '=>' 1 '}; Есть идеи? –

Смежные вопросы