数据类型之哈希

来源:互联网 发布:网络扫描工具 安卓 编辑:程序博客网 时间:2024/05/16 11:31

-- Start

学过 Java 的人应该对 hash 不陌生,所谓 hash 就是存储一对 key 和 value 的一种数据结构,它用来存储一种对应关系,如:省份证号和姓名,IP 地址和域名等等。在 Perl 中,key 必须是字符串,value 可以是任何标量。下面的例子演示如何使用hash。

#!/usr/bin/perl%IDForName; # 空hash%IDForName = (); # 空hash%IDForName = ('1', '张三', '2', '李四'); # 将列表中的值赋给hash%IDForName = ('1'=>'张三', '2'=>'李四'); # => 相当于逗号,使用上和逗号没有任何区别@people = ('1', '张三', '2', '李四');%IDForName = @people; # 将数组中的值赋给hash@people2 = %IDForName;# 将hash中的值赋给数组%IDForName2 = %IDForName; # 将一个hash中的值赋给另一个hash$IDForName{'3'} = '王五'; # 增加delete $IDForName{'3'}; # 删除$name = $IDForName{'1'}; # 查找$IDForName{'1'} = '赵六'; # 修改@IDs = keys %IDForName; # 返回所有的 key$IDAmount = keys %IDForName; # 返回 key 的数量@names = values %IDForName; # 返回所有的 value$nameAmount = values %IDForName; # 返回 value 的数量%NameForID = reverse %IDForName; # 交换 key 和 value# 判断是否存在某个键if (exists $IDForName{'3'}) {print "this key already exists.\n";}# 迭代 hashwhile(($id, $name) = each %IDForName) {print "$id => $name\n";}# 先对 key 按字符串排序排序后迭代 hashforeach $id (sort keys %IDForName) {$name = $IDForName{$id};print "$id => $name\n";}# 先对 key 按数字排序排序后迭代 hashforeach $id (sort{$a<=>$b} keys %IDForName) {$name = $IDForName{$id};print "$id => $name\n";}


%ENV 是一个内置的 hash,我们可以通过它来得到系统的环境变量,如 PATH,$ENV{PATH}。

-- 更多参见:Perl 精萃

-- 声 明:转载请注明出处
-- Last Updated on 2012-06-29
-- Written by ShangBo on 2012-06-29
-- End