第四章和第五章先省略
第六章 哈希
先解释一下:
哈希(以前称为关联数组)是一种数据结构,和数组的相似之处在于可以容纳任意多的值并且按需取用;
两者的不同之处在于索引方式,数组使用数字来做索引,哈希却是以名字来做索引,
哈希的索引值,称为键(key),并不是数字,可以是任意唯一的字符串。
哈希没有顺序,有的只是键值对的集合。
哈希的值可以是数字、字符串、undef这些类型的集合,但是哈希的键是唯一的字符串。
1、访问哈希元素
使用花括号,$hash{$some_key}
2、访问整个哈希
要指代全部哈希,使用%作为前缀。
3、哈希赋值
my %new_hash=%old_hash
4、胖箭头(胖逗号)
=>,在任何需要逗号隔开的地方也可以使用胖逗号。对perl来说没什么区别。
一般来说,键都会比较简单的字符串,如果键是以字母、数字、下划线组成的,没有以数字开头,那么引号可以省略。这类无需引号的字符序列,我们称之为裸字。因为它是孤立存在的。
还有一类可以省略引号的关键点是:在花括号中检索特定键名的元素时。
5、哈希函数
perl存在很多函数可以一次性处理整个哈希
第一个:keys和values函数
代码 输出keys函数返回哈希中的键列表,values函数返回哈希中对应的值列表。
第二个:each函数
如果需要迭代(逐项处理其中每一个元素)整个哈希,会使用到echo函数,它以包含两个元素的列表的形式返回键-值对;
在实际的使用中,唯一适合使用each的地方就是while循环中;
哈希会记得上次访问的位置,技术话来讲就是个哈希都有一个迭代器;
如果要依次处理哈希,那么就要用到对键排序。
第三个:exists函数
检查哈希中是否存在某个键时,使用exists函数,返回真或者假,分别表示键存在与否,与对应的值无关。
第四个:delete函数
能删除哈希中指定的键和其对应的值,如果没有这样的键,那么他就会直接结束,而不会出现任何警告和错误信息。
6、哈希元素内插
将单一哈希元素内插但双引号引起的字符串中。但是不支持内插整个哈希。
双引号需要反斜线转义的魔力字符:$和@,因为他们引入了一个perl将要内插的变量。
7、%ENV哈希
perl访问周围环境,就是访问%ENV哈希。
比如,我们常常需要从%ENV中读取PATH的值;
输入 输出
网友评论