Perl 哈希的创建和引用介绍

2019-10-01 12:43:33王振洲

        reverse @a      reverse @{$aref}        对一个数组做倒序排序
        $a[3]           ${$aref}[3]             数组中的一个成员
        $a[3] = 17;     ${$aref}[3] = 17        对一个成员赋值
上面每行中,两个表达式实现的是同一种功能。左边那个是对数组@a操作,右边那个是对'引用'$aref所指向的数组操作。它们对数组产生相同的作用。

使用哈希的'引用'和数组的'引用'完全一样。

        %h              %{$href}              一个哈希
        keys %h         keys %{$href}         从哈希中将键取出来
        $h{'red'}       ${$href}{'red'}       哈希中的一个成员
        $h{'red'} = 17  ${$href}{'red'} = 17  对一个成员赋值
你对一个'引用'无论想做什么,使用规则 1 已经告诉你怎么做了。 你只要象使用常规的数组或哈希一样编写Perl代码,然后把数组或哈希的名字用 {$reference}来替代。‘当我只有一个'引用'时,怎么来遍历整个数组?'你这样写:

        for my $element (@array) {
           ...
        }
接着用'引用'替代数组名@array:

        for my $element (@{$aref}) {
           ...
        }
‘怎当我只有一个'引用'时,怎么来打印一个哈希的内容?'先写一个打印整个哈希的代码:

        for my $key (keys %hash) {
          print "$key =>; $hash{$key}/n";
        }
然后用'引用'代替那个哈希的名字:

        for my $key (keys %{$href}) {
          print "$key =>; ${$href}{$key}/n";
        }

使用规则 2

使用规则 1 是你真正需要的,因为它告诉了你怎么来处理一个'引用',而它对几乎任何的'引用'都有效。但是我们通常做的事情只是和数组或哈希中的一个成员有关,使用规则 1 却是很笨重的方法,所以还有简单的方法。