+ -
当前位置:首页 → 问答吧 → hash这样输出为什么不对?

hash这样输出为什么不对?

时间:2011-01-23

来源:互联网

#!/usr/bin/perl

my %hash;
my $i;
for($i=1;$i<10;$i++)
{
         my $key=$i;
         my %hs=(
         first => "a",
         second => "b",
         third => "c",
         );
         $hash{$key} = \%hs;
}


while(($mykey,$myvalue) = each(%hash))
{
         print $mykey." ";
#         while(($k,$v)=each%{$myvalue})
#         {
#          print $k.":".$v;
#        }
  #       print "\n";
        print $myvalue{"first"}.":";
        print $myvalue{"second"}.":";
        print $myvalue{"third"}.":";
        print "\n";
}
注释掉的是要的结果,但是现在不是需要的结果。。。
这样的语句需要怎么修改呢?请指教!

作者: linfengfeiye   发布时间: 2011-01-23

你这样展开有什么特殊意义?直接用 Data::Dumper 多省事

你那个 $myvalue 是个 hashref 索引应该用 $myvalue->{'first'} 这种格式的

作者: zhlong8   发布时间: 2011-01-23

本帖最后由 x9x9 于 2011-01-23 19:55 编辑

如果为了看下数据结构当然用Data::Dumper最好了。如果想取值的话就得遍历一下:
  1. foreach my $k (keys %hash){
  2. forecah my $kk (keys %{$hash{$k}}){
  3. print "$kk:$hash{$k}->{$kk}\n";
  4. }
  5. }
复制代码

作者: x9x9   发布时间: 2011-01-23