Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多层perl哈希_Perl_Hash - Fatal编程技术网

多层perl哈希

多层perl哈希,perl,hash,Perl,Hash,当我使用Dumper时,我有一个如下所示的哈希。我想迭代每个级别,并单独打印所有内容 $VAR1 = { 'TP144' => { 'LNDN CDR' => [ 'NAME XYZ FNAME ABC STATUS MA

当我使用Dumper时,我有一个如下所示的哈希。我想迭代每个级别,并单独打印所有内容

$VAR1 = {
          'TP144' => {
                          'LNDN CDR' => [
                                            'NAME   XYZ
                        FNAME   ABC
                        STATUS  MARIED
                        TEST   "THIS IS TEST"
                        TEMP!VALUE   0'
                                        ],
看起来是这样的:L2的值本身就是一个数组

$VAR1{L1}{L2}=>ARRAY
感谢您的帮助

提前谢谢

编辑:谢谢Mat,我在那个链接中找到了答案。我是这样做的

foreach $L1 ( sort keys %VAR1 ) {
     print "$L1: { ";
     for $L2 ( sort keys %{ $VAR1{$L1} } ) {
         foreach  (@{$VAR1{$L1}{$L2}})
         {
             print $_."\n";
         }

     }
     print "}\n";
 }

最简单的方法是递归地这样做

  • 检查递归子对象的输入

    • 如果您的输入是标量,请打印

    • 如果您的输入是n arrayref,则循环每个元素并使用子元素递归打印该元素

    • 如果您的输入是一个hashref,则在每个键上循环,并使用sub递归地打印该键的值


完成

最简单的方法是递归执行

  • 检查递归子对象的输入

    • 如果您的输入是标量,请打印

    • 如果您的输入是n arrayref,则循环每个元素并使用子元素递归打印该元素

    • 如果您的输入是一个hashref,则在每个键上循环,并使用sub递归地打印该键的值


完成

如果您在执行这三个步骤中的任何一个步骤时遇到问题,请说明您尝试了什么,并询问如何解决。我尝试了此方法:但我得到以下错误:
key=[TP144]:value=[HASH(0x16b6478)]
@Mardanian-您阅读了答案吗?您需要一个递归sub如果您在实现这三个步骤中的任何一个时遇到问题,请说明您尝试了什么并询问如何解决它。我尝试了这个:但我得到以下错误:
key=[TP144]:value=[HASH(0x16b6478)]
@Mardanian-您读过答案了吗?你需要一个递归函数sub@Mat谢谢这个链接帮助我找到了正确的答案。@Mardanian-这是可行的,但请注意只提供相同的数据结构。它不适用于其他结构。@Mat感谢该链接帮助我找到了正确的答案。@Mardanian-这是可行的,但请注意只向它提供相同的数据结构。它不适用于其他结构。