在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
哈希是一种数据结构,它和数组的相似之处在于可以容难任意多的值并能按需取用,而他和数组的不同在于索引的方式,数组是以数字为索引而哈希则是以名字为索引。 哈希的键是唯一的,哈希的值可以重复。 哈希的应用场景举例:
访问哈希元素如:$hash{$some_key} //注意使用的是大括号{} 不是中括号 赋值: $family_name{'fred'}='flintstone'; $family_name{'barney'}='rubble'; 访问整个哈希%some_hash=('foo',35,'bar',12.4); // %<哈希名>=(key,value,key,value......) 可以用下面代码简单查看: my @k=keys %some_hash;//keys后面讲解 foreach (@k) { print "$_=>$some_hash{$_}"."\n"; } 注意输出顺序可能是乱序。 @tmp_hash=%some_hash==>结果:tmp=foo 35 bar 12.4 哈希赋值my %new_hash=%old_hash;==>会为new_hash分配内存,然后将old_hash的值赋过去。并不是简简单单引用 my %inverse_hash=reverse %any_hash;
上面这个比较适用于:按主机名找IP地址或者按照IP地址找主机名 胖箭头=>主要目的是为了对下面这种模式的改善:%some_hash=('foo',35,'bar',12.4); 如:my %some_hash=( 'foo'=>35, 'bar'=>12.4, 'dnio'=>undef, ); 注意:每一行的最后都有逗号. 哈希函数keys values keys函数能返回哈希的键列表,values函数能返回对应的值的列表。 如:my %hash=('a'=>1,'b'=>2,'c'=>3,); my @k=keys %hash;// 将会得到 a b c my @v=values %hash;// 将会得到 1 2 3 如果使用: my $count=keys %hash;//将会得到3 也就是说hash有3对键 each函数 如果需要迭代整个哈希,常见的用法就是用each函数.每次返回的就是hash表的键、值对。直到所有的元素都被访问完。 如:while (($k,$v)=each %hash){ print "$k=>$v\n"; } 再比如:each返回键-值对的顺序是乱序的,但它与keys和values返回的顺序相同,也就是hash的自然顺序。如果需要依次处理hash,则只需要对键排序就行 foreach $key(sort keys %hash){ $value=$hash{$key}; say "$key=>$value"; } exists函数 检查哈希表中是否存在某个键。 if (exists $hash{'foo'}){ say "there is a foo"; } delete函数 从哈希中删除指定的键和相对应的值。(总是成功) my $person="betty"; delete $hash{$person}; %ENV哈希 Perl程序既然运行在某个环境中,就需要对周围的环境有所感知。Perl访问这些环境信息的方法就是访问%ENV哈希。如: print "PATH is $ENV{PATH}";
|
请发表评论