本文和大家重点讨论一下利用Perl哈希表建立键-值数据映射问题,这里告诉你如何创建Perl哈希表,如何插入、删除要素,以及如何创建嵌套PerlPerl哈希表和利用循环来处理Perl哈希表。

成都创新互联是一家专业提供宁乡企业网站建设,专注与成都网站设计、网站建设、H5建站、小程序制作等业务。10年已为宁乡众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
Perl基础:利用Perl哈希表建立键-值数据映射
Perl的数据结构中最有趣的一个特性是Perl哈希表(hash),它使得在数据片段之间建立键—值(key-value)关联成为可能。虽然这些Perl哈希表要远远比普通系统中以数字索引的数组用途更广,但是往往也会使初学者不知所措。这就是要写本篇文章的原因所在——它将告诉你如何创建Perl哈希表,如何插入、删除要素,以及如何创建嵌套PerlPerl哈希表和利用循环来处理Perl哈希表。
定义Perl哈希表
首先,什么是Perl哈希表?从本质上来说,它是以字符串索引的数组。也就是说,你要使用字符串标签而不用数字来存取各个元素。下面是一个例子:
列表A
- #!/usr/bin/Perl
 - #definehash
 - %alphabet=('a'=>'apple',
 - 'b'=>'ball',
 - 'c'=>'cat',
 - 'x'=>'xylophone');
 
上面的几行用四对键—值关联建立了一组PerlPerl哈希表。可以注意到,变量名前面的符号%表示它是一个Perl哈希表,箭头用来指出键—值关系。
你也可以这样写代码:
列表B
- #!/usr/bin/Perl
 - #definehash
 - %alphabet=('a','apple','b','ball','c','cat','x','xylophone');
 
在定义了一个Perl哈希表以后,你就可以用定义后的名称对独立的要素进行存取。例如,看下面的代码:
列表C
- #!/usr/bin/Perl
 - #definehash
 - %alphabet=('a','apple','b','ball','c','cat','x','xylophone');
 - #accesshashvalue
 - print"Aisfor".$alphabet;
 
输出结果为:
Aisforapple.
要清除Perl哈希表,只需简单地把它赋值于一个空的数据集,就像下面的例子:
列表D
- #!/usr/bin/Perl
 - #(re)initializehash
 - %alphabet=();
 
插入、改变和删除Perl哈希表元素
你可以在一个Perl哈希表中插入一个新元素(或者更改一个现有的Perl哈希表),只需要给与之相对应的键设置一个新的数值就行了。如果这个键不存在,它将会被创建。下面是一个例子:
列表E
- #!/usr/bin/Perl
 - #definehash
 - %alphabet=('a','apple','b','ball','c','cat','x','xylophone');
 - #addnewelement
 - $alphabet='dog';
 - #changeexistingelement
 - $alphabet='arrow';
 - #accesshashvalue
 - print"Aisfor".$alphabet;
 
你可以用delete()函数删除一对键—值对,就像下面这样:
列表F
- #!/usr/bin/Perl
 - #definehash
 - %alphabet=('a','apple','b','ball','c','cat','x','xylophone');
 - #deleteelement
 - delete$alphabet;
 
#p#
检索键和数值
如果你觉得一个Perl哈希表的键和数值有用,需要进一步处理,Perl允许将其提取到单独的数据结构中。你可以用函数keys()将一个Perl哈希表的键返回成为一个数字索引的数组。下面是一个例子:
列表G
- #!/bin/Perl
 - #definehash
 - %alphabet=('a'=>'apple','b'=>'bat','c'=>'cat');
 - #getandprinthashkeys
 - @keyskeys=keys(%alphabet);
 - print"@keys";
 
或者,你可以用函数values()获得一个具有Perl哈希表值的数组,如下:
列表H
- #!/bin/Perl
 - #definehash
 - %alphabet=('a'=>'apple','b'=>'bat','c'=>'cat');
 - #getandprinthashvalues
 - @vals=values(%alphabet);
 - print"@v";
 
计算Perl哈希表的大小
计算Perl哈希表大小的最简单方法就是用上述的keys()函数,将Perl哈希表中的键提取到一个数组中,然后检索得到数组的大小,操作方法如下:
列表I
- #!/bin/Perl
 - #definehash
 - %alphabet=('a'=>'apple','b'=>'bat','c'=>'cat');
 - #printnumberofhashelements
 - print"Thehashhas".scalar(keys(%alphabet))."elements";
 
处理Perl哈希表元素
运用while()循环处理一个Perl哈希表中的所有元素也比较容易。下面是一个简单的例子:
列表J
- #!/usr/bin/Perl
 - #definehash
 - %alphabet=('a','apple','b','ball','c','cat','x','xylophone');
 - #loopoverhash
 - while(($key,$value)=each(%alphabet)){
 - print"$keyisfor$value";
 - }
 
或者,用前面已经讨论过的for()循环和keys()函数:
列表K
- #!/usr/bin/Perl
 - #definehash
 - %alphabet=('a','apple','b','ball','c','cat','x','xylophone');
 - #loopoverhash
 - for$k(keys(%alphabet)){
 - print$k."isfor".$hash."";
 - }
 
运用嵌套的Perl哈希表
Perl也允许在一个Perl哈希表(或数组)中再嵌入一个Perl哈希表(或数组)。这样就为构建长而复杂的数据结构提供了很大的灵活性,下面是一个例子:
列表L
- #!/usr/bin/Perl
 - %movies=(
 - 'black'=>{'hero'=>'Batman','villain'=>'ThePenguin'},
 - 'red'=>[{'hero'=>'Spiderman','villain'=>'GreenGoblin'},
 - {'hero'=>'Superman','villain'=>'LexLuthor'}]
 - );
 - #retrieveandprintvalues
 - print$movies."fights".$movies."";
 - print$movies[1]."fights".$movies[1]."";
 
该代码返回的结果是:
BatmanfightsThePenguin
 SupermanfightsLexLuthor
                本文标题:技术分享利用Perl哈希表建立键-值数据映射
                
                链接地址:http://www.csdahua.cn/qtweb/news9/47159.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网