散列, 也叫哈希 hash, 是Perl中一种比较特殊, 有趣的基础技术结构。
散列存储的是成对的数据, 也就是说散列中的数据都是俩俩关联的。
散列使用%作为前缀:
my %user;
散列中存储的数据都是以key-value这样的结构, 因此我们赋值的时候可以这样:
my $user{'Mike'} = 'admin';
my $user{'Tom'} = 'normal user';
也可以一次性赋值多组数据:
my %user = {
Mike => 'admin',
Tom => 'normal user',
};
作为key的字符串, 可以省略引号。
这里最后一个元素后面也加上逗号, 这个习惯很重要, 这样当你或者其他人, 以后需要在后面继续添加元素时, 就不容易出错。
对于散列, 有2个很重要的特性需要记住
- 散列存储的数据是无序的, 每次添加数据都是在随机的位置
也就是说, 我们不能像数组那样使用数字下标来获取指定的元素。 - 但是, 当我们需要根据key(或者value)来进行有序的输出时, 我们可以对它们先进行排序, 然后再输出:
- sort keys %hash;
- 散列中存储的key是唯一的
- 数据唯一性这个特性很重要, 因为这个特性, 散列常被用来统计数据出现的次数。
- 也就是说,每次我们对同一个key进行赋值, 后续的值会盖掉前面的值, 而不是保存两份数据:
my $user{Mike} = 'admin';
$user{Mike} = 'user';
当我们取key是Mike的数据时, 取到的只能是'user' .
我们简单归纳一下Perl的三种基本数据类型:
- 标量:单一个数据
- 数组:有序的,可以重复的一组数据
- 散列:无序的, 唯一的,键-值对形式的数据