每日学习:Perl语言学习之哈希(Hashes)

Posted 大同学吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日学习:Perl语言学习之哈希(Hashes)相关的知识,希望对你有一定的参考价值。


关注并标星大同学吧

每天1次,打卡学习

积累1个新知识,增1分职场底气

作者称谓:wonder

个人介绍:前瞻性的眼光,和持之以恒的学习

半导体知识分享第99期

技能升级,从这里开始


哈希,也可以称之为关联数组,其实是一种索引为非数字(字符串)的数组。

哈希是一组键值对的集合,可以根据其键搜索对应的值。它是Perl提供的内置字典功能。


哈希变量以''符号开头。Perl要求哈希的键是字符串,而值可以是任何标量。哈希的键必须是唯一的,如果将新的键值对添加到哈希并且该键已经存在,则会覆盖其对应的值。


我们可以通过定义键值对在哈希中添加数据。Perl数组一样,当添加或删除键值对时,哈希会增长和缩小。哈希和数组的主要区别在于数组索引是数字,而哈希索引可以是任意字符串。

 

定义和初始化

 

%hosts = ("www.yahoo.com","131.111.11.1", www.northenlight.com,"128.11.1.1");


为了增强可读性,我们可以使用=>,而不是逗号。上述例子可以写成:

 

%hosts = ( "www.yahoo.com" =>"131.111.11.1", "www.northenlight.com" =>"128.11.1.1" );
然后就可以通过下面的表达式找到位于对应URL的IP地址:

 

$hosts{"www.yahoo,com"}; # Returns131.111.11.1$hosts{"www.northenlight.com"}; # Returns 128.11.1.1


与数组一样,也是使用$来访问哈希中的单个元素。但是,哈希中的索引是用花括号{}括起来的,因为其索引始终是字符串。


哈希操作

赋值是哈希中最基本的操作,其索引值是花括号{}括起来的字符串:

 $month{"Jan"}=31;

与数组不同,哈希中索引的顺序不是自然有序整数。我们可以使用函数keysvalues依次访问所有键和值。

foreach $ip (keys %hosts){print "The name of the site for the address $ip is$hosts{$ip}\n";} foreach $ip (values %hosts){ print "One of portals hasIP address $ip. Guess which one. \n";}


我们还可以使用each函数对哈希进行遍历。

 

while (($dns, $ip) = each(%hosts)){ print "$dns has IP address$ip\n";}


 

在哈希中可以使用 exists函数检查哈希中是否存在已定义的键值对。

 

if (exists($hosts{'www.yahoo.com'})) { print $hosts{'www.yahoo.com'};}

 


往期回顾

1.

2.

3.

4.

5.

7.

8.

9.

10.



觉得不错,就点个在看喔

每日学习1个新知识,让好的习惯成就更优秀的你!

以上是关于每日学习:Perl语言学习之哈希(Hashes)的主要内容,如果未能解决你的问题,请参考以下文章

perl学习hashes

Perl的Hash of Hashes等效实现了Tcl中的dicts字典

从 perl 数组/哈希打印信息

Redis学习之哈希类型总结

Perl语言学习,不要停哟~~

10天学会Perl第二天——变量