2013-05-11 5 views
1

У меня есть hash, у которого будет ключевая «форма» и несколько ключей Table, которые указывают на другие хеши. Но таблицы будут иметь любое количество tr, а tr будет иметь любое количество td. Таким образом, проблема в том, что у него есть анонимные массивы. Как распечатать таблицу из этого хэша?Печать таблицы из hash of hash perl

'form'=>{ 
    'Table2' => { 
    'tr' => [ 
     { 
     'td' => [ 
       { 
        'db_feild_name' => 'project_details', 
        'type' => 'texta', 
        'display_name' => 'Project Detail', 
        'mandate' => '1' 
       }, 
       { 
        'db_feild_name' => 'project_name', 
        'type' => 'text', 
        'display_name' => 'Project Name', 
        'mandate' => '1' 
       }, 
       { 
        'db_feild_name' => 'project_date', 
        'type' => 'date', 
        'display_name' => 'Date' 
       } 
       ] 
     }, 
     { 
     'td' => [ 
       { 
        'db_feild_name' => 'issue_name', 
        'type' => 'text', 
        'display_name' => 'Name', 
        'mandate' => '1' 
       }, 
       { 
        'db_feild_name' => 'last_name', 
        'type' => 'text', 
        'display_name' => 'last Name', 
        'mandate' => '1' 
       }, 
       { 
        'db_feild_name' => 'age', 
        'type' => 'text', 
        'display_name' => 'Age' 
       } 
       ] 
     } 
    ], 
    'Table_Header' => 'test_table2', 
    'Title' => 'i am table' 
    } 
} 

ответ

0

Пояснение: $table указывает на,

{ 
    'tr' => [..], 
    'Table_Header' => 'test_table2', 
    'Title' => 'i am table' 
} 

$tr указывает на,

{ 
    'td' => [..] 
}, 

$td и указывает на,

{ 
    'db_feild_name' => 'project_details', 
    'type' => 'texta', 
    'display_name' => 'Project Detail', 
    'mandate' => '1' 
}, 

Предполагая, что ваш хэш составляет %h

for my $table (values %{ $h{"form"} }) { 
    # print <table> 
    print $table->{"Table_Header"}, $table->{"Title"}; 

    for my $tr (@{ $table->{"tr"} }) { 
    # print <tr> 

    for my $td (values %$tr) { 
     # print <td> 
     print $td->{"db_feild_name"}; # type,display_name,etc 
     # print </td> 
    } 

    # print </tr> 
    } 

    # print </table> 
}