哈希引用的赋值及输出

    技术2026-01-01  0

    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";

         }

    最新回复(0)