在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Perl中的哈希数据结构。相比较于数组,这种数据结构对于数据查找和统计更加方便。
一个特殊的哈希,%ENV,表示当前terminal下,通过setenv设置的variable的键值。 键:环境变量名,,,,值:环境变量值。
哈希是一种数据结构,由一对对的键(keys)--值(values)对来组成。 这些键和值都是任意的标量,但键总会被转换成字符串而且必须是唯一的字符串。 访问哈希元素, $hash{$some_key} ##和访问数组的做法类似,只是使用了花括号{}而非方括号[]。 访问哈希表中不存在的值得到undef。 $family_name{'barney'} = 'rubble' ##完成对某一哈希元素的单一赋值 访问整个哈希, %family_name ##此时哈希被转换成列表,列表中的元素为键--值对。 %family_name = ('foo', 35, 'bar', 12.4); my %new_hash = %old_hash ##整个hash的赋值,会先将hash分解为键值对, 后在将键值对合并为hash。所以前后顺序可能改变。 还可以将hash写为如下的方式来进行赋值 my %last_name = ( 'fred' => 'flintstone', 'dino' => undef ); =>称为胖箭头,来显式的指出其中的键值对,其中键的''可以省略。 $score{'fred'}也可以直接简写为$score{fred}。
哈希中的函数。 keys和values分别返回hash中的键列表和值列表。my @k = keys %hash; my @v=values %hash; 在标量上下文中,分别返回键元素和值元素的个数。 if(%hash) {print "....";} ##在标量上下文,只要hash中有至少一个键值对,就返回真。 each函数,从哈希中返回一组键值。 while ( ($key, $value) = each %hash ) {print "....";} ##在while中时标量上下文,返回2或0. exists函数,检查哈希中是否存在某个键。 if (exists $book{"dino"}) {print "....";} delete函数,删除哈希中的某个键值,不是赋值undef,而是直接删除。 delete $books{$person}; 不可以在双引号内,直接内插整个hash。 foreach $persons (sort keys %books) if( $books($persons) ) {print "$person has $books{persons}";} ##只可以这样完成单个哈希的内插 |
请发表评论