哈希引用的赋值及输出

来源:互联网 发布:bigdecimal mysql 编辑:程序博客网 时间:2024/06/09 16:40

1.使用哈希引用

   my $hash = {};  #定义一个空的匿名哈希作为哈希引用的初始化

 

2.哈希赋值

   a.给字符串赋值

   $hash->{a} = 'x';

   b.给数组赋值

   @array = (1, 2, 3);

   foreach (@array)

   {

        push @{$hash->{b}} = $_;

   }

    c.给哈希赋值

    $hash->{c}{d} = 'y';

 

3.输出哈希

    1.如果我们想输出$hash->{a}的值,可以用

    my ($key, $value) = each %{$hash};

    print "key = $key. /n";

    print "value = $value. /n";

 

    2.如果我们需要输出$hash->{b}的值,

    调用 my ($key, $value) = each %{$hash};后   

    这时的$value是一个数组,我们需要循环输出数组的值

    这里有三种方法

    a.

    for $key ( keys %{$hash})

    {

          print "$key => @{$hash->{$key}}";

    }

    b.打印时追加数组索引

    for my $key (keys %{$hash})
    {
        print "$key :";
        #print "$key => @{$hash->{$key}} /n";

        for $i (0 .. $#{$hash->{$key}})
        {
            print "$i = $hash->{$key}[$i] ";
 
        }
         print "/n";
     }

     c.

     while ( my($keys, $values) = each %{$hash} )

     {

             print "$keys = @{$value} /n";

     }

 

     注意:这里的循环中的赋值都是属于引用赋值,所以在取值的时候都需要解引用。如@{$hash->{$key}}和@{$value}

 

    3.如果我们需要输出$hash->{c}{d}的值,

    调用 my ($key, $value) = each %{$hash};后

    这时的$value是另一个哈希表,我们就需要再次用

    my ($keytmp, $valuetmp) = each %{$value};

    print "key = $keytmp. /n";   

    print "value = $valuetmp. /n";

 

    那么打印哈希的哈希,可以用

    while ( my($keys, $values) = each %{$hash})

    {

          print "$keys :";

          while ( my($key, $value) = each %{$values})

          {

                 print "$key = $value";

          }

           print "/n";

     }

原创粉丝点击