zoukankan      html  css  js  c++  java
  • perl的foreach循环的坑

    最近在写perl脚本的时候用foreach遍历hash的时候,出现遇到了一个问题,就是说当hash为一层的时候,并不会有问题,但是当hash类型结构比较复杂的时候,就会有需要注意的地方了。

    还是举例子说明最实际一些了,例如下面的这个%hash

     1 my %hash;
     2  
     3 %hash = ("小明"=>{'语文'=>50, '数学'=>60},
     4         "小刚"=>{'语文'=>80, '数学'=>90});
     5  
     6 foreach my $key ( keys %hash )
     7 {
     8     print "$key:
    ";
     9     my %subhash = $hash{$key};
    10     foreach my $subkey ( keys %subhash )
    11     {
    12         print "	$subkey => $subhash{$subkey}
    ";
    13     }
    14 }
     
    一开始我就是这样来写的,觉的很正常啊,就是普通的嵌套循环呗,但是一执行,就开始报错了,提示$subkey是一个hash类型,后来在网上找了半天找到了一个例子,明白了怎么回事了,
    修改如下:
    my %hash;
     
    %hash = ("小明"=>{'语文'=>50, '数学'=>60},
            "小刚"=>{'语文'=>80, '数学'=>90});
     
    foreach my $key ( keys %hash )
    {
        print "$key:
    ";
        my $subhash = $hash{$key};
        foreach my $subkey ( keys %$subhash )
        {
            print "	$subkey => $$subhash{$subkey}
    ";
        }
    }

    在第二次遍历hash的子集的时候要吧$hash看成一个整体,弄明白了这个了,也给自己记录一个下。

  • 相关阅读:
    [LeetCode]N-Queens
    [LeetCode]Anagrams
    [LeetCode]Permutations II
    [LeetCode]Permutations
    [STL]heap和priority_queue
    [STL]deque和stack、queue
    10、小易记单词--2017网易春招
    29、剑指offer--最小的K个数
    28、剑指offer--数组中出现次数超过一半的数字
    9、涂棋盘--2017网易春招
  • 原文地址:https://www.cnblogs.com/jimoer/p/5466086.html
Copyright © 2011-2022 走看看