Perl语言入门笔记 第六章 哈希(hash)
2015-09-21 01:33
351 查看
=pod 哈希 哈希表里只是一堆的键值对而已,而没有任何顺序,键可以是任意字符串,值也是 awk的哈希键值对增多的时候会逐渐变慢,而perl没有这个缺点 访问哈希元素: $hash{$some_key} foreach my $person (qw< barney fred >) { print "I'v heared of $person $family_name{$person}.\n"; } 在挑选哈希名的时候,最好使得哈希名和键之间能放进去一个"for"字,比如"family_name for fred"是filntstone, 因此把哈希命名为family_name能清晰地反映出键和值之间的关系。 $foo = 'bar'; print $family_name{$foo . 'ney'}; #打印"rubble",连接在一块 哈希可以被转换成列表 哈希赋值: 不是常见用法,但哈希真的可以用一般的赋值语法来赋值; my %new_hash = %old_hash; 得到一个反序的哈希:键值互换 my %inverse_hash = reverse %any_hash; 胖箭头: my $last_name = ( 'fred' => 'flintstone', 'dino' => 'undef', ); 哈希函数: perl中有很多有用的函数可以一次处理整个哈希。 keys函数能返回哈希的键列表,而values函数能返回对应的值列表。如果哈希没有任何的成员,则两个函数都返回空列表 my @k = keys %hash; my @v = values %hash; 上面的keys和values是一一对应的 得到哈希中元素的个数: my $count = keys %hash; my $count = values %hash; if(%hash) { } each函数: 唯一适合使用each的地方 while(my($key, $value) = each %hash) { } foreach函数: foreach $key (sort keys %hash) { } 判断某项哈希元素的真假: if($book{$some}) { } exists函数: 检查哈希中是否存在某个键,可以使用exists函数 if(exists $book{"dino"}) { } delete函数: my $person = "betty"; delete $book{$person}; #撤销$person的借书证 上面"将undef存入哈希元素"并不相同,在这两种情况下,exists($books{"betty"})会得出相反的结果。在delete之后,键便不会出现在哈希之中,但存入undef后,键却是一定会存在的。 哈希元素的内插: 可以将单一哈希元素内插到双引号引起的字符串中。 foreach $person (sort keys %books) { if($book{$person}) { print "$person has $books{$person} items\n"; #但这种方式不支持内插整个hash表 } } %ENV哈希: print “PATH is $ENV{PATH}\n”; =cut
相关文章推荐
- Perl语言入门笔记 第五章 输入与输出(标准输入输出,文件句柄,printf,die,say)
- centos安装Chromium
- centos安装Chromium
- HDU 5452 Minimum Cut(LCA+树形DP)
- Hibernate Tools 自动生成hibernate的hbm文件
- 努力学习 HTML5 (4)—— 浏览器对语义元素的支持情况
- hbase-1.0.1的master页面无法打开
- Could not load file or assembly System.Core, Version=2.0.5.0
- 剑指offer 链表
- 排序算法-合并排序(C语言实现)
- [LeetCode] Isomorphic Strings - 字符串操作:数组计数字符个数问题
- 1.Python进阶 词典dict
- Ember.js 入门指南——表单元素
- Android中GridView使用
- DP:Islands and Bridges(POJ 2288)
- Block实现原理
- git提交方式
- c++ 类与对象的内存
- win10安装软件 错误解决
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛A题