成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Perl Hash用法之入門(mén)教程

開(kāi)發(fā) 后端
本文向大家簡(jiǎn)單介紹一下Perl Hash的用法,哈希是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組類(lèi)似,可以將值存放到其中,或者從中取回值。

本文和大家重點(diǎn)討論一下Perl Hash的用法,哈希是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組類(lèi)似,但是,和數(shù)組不同的是,其索引不是數(shù)字,而是名字。也就是說(shuō),索引(這里,我們將它叫key)不是數(shù)字而是任意的唯一的字符串。

一、什么是Perl Hash

哈希是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組類(lèi)似,可以將值存放到其中,或者從中取回值。但是,和數(shù)組不同的是,其索引不是數(shù)字,而是名字。也就是說(shuō),索引(這里,我們將它叫key)不是數(shù)字而是任意的唯一的字符串。

key可以是任意的字符串,你可以使用任何的字符串作為key,但它們是唯一的。
另一種思考hash 的方法是,把它看作一堆數(shù)據(jù)(a barrel of data),每一個(gè)數(shù)據(jù)都有一個(gè)相應(yīng)的標(biāo)簽??梢酝ㄟ^(guò)標(biāo)簽訪問(wèn)此標(biāo)簽對(duì)應(yīng)的元素。但其中是沒(méi)有“第一個(gè)”元素的概念的。在數(shù)組中,數(shù)組元素從0,Perl學(xué)習(xí)之哈希hash_馬亮的計(jì)算機(jī)技術(shù)1,2 開(kāi)始編號(hào)。但在hash中,沒(méi)有確定的順序,因此也沒(méi)有第一個(gè)元素。只是一些key/value 對(duì)的集合。

keys和values均為任意的標(biāo)量,但keys通常轉(zhuǎn)換為字符串。因此,如果將表達(dá)式50/20 作為keys,則其通常被轉(zhuǎn)換為3字符的字符串“2.5”。
由于Perl的“沒(méi)有不必要的限制”的設(shè)計(jì)哲學(xué):hash可以是任意大小,從空hash(沒(méi)有key/value對(duì)),到任何你內(nèi)存允許的大小。
keys是唯一的,但values可以重復(fù)。hash的value可以是數(shù)字,字符串,undef,或者它們的混合,但key是唯一的。

為什么使用Perl Hash

可以把hash看作一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù),其中每一個(gè)key下面可以有一塊數(shù)據(jù)。如果你的任務(wù)是關(guān)于:“查詢(xún)重復(fù)的”,“唯一的”,“交叉引用的”,“查詢(xún)表”,則hash很可能在這類(lèi)應(yīng)用中幫上Perl學(xué)習(xí)之哈希hash_馬亮的計(jì)算機(jī)技術(shù)你的忙。

二、Perl Hash元素的存取

要訪問(wèn)hash 元素,可以使用下面的語(yǔ)法:$hash{$some_key}
這和訪問(wèn)數(shù)組元素的方法有些類(lèi)似,這里下標(biāo)(key)上使用的是花括號(hào)({}),而不是方括號(hào)([ ])?,F(xiàn)在key 的表達(dá)式是字符串,而非數(shù)字。
hash的名字和Perl中其它的標(biāo)識(shí)符的命名規(guī)則是一樣的(字母,數(shù)字,下劃線組成,但不能由數(shù)字開(kāi)頭)。
訪問(wèn)不存在的hash元素將得到undef。

1.作為整體的Perl Hash

要引用整個(gè)hash,使用百分號(hào)(%)作為前綴。
為了方便,hash可以轉(zhuǎn)換為列表,或者反過(guò)來(lái)。

2.Perl Hash賦值

可以使用如下的語(yǔ)法在hash 之間拷貝:
%new_hash = %old_hash;
將hash轉(zhuǎn)變成其它形式更加常見(jiàn)。例如,我們可以將hash反轉(zhuǎn):
%inverse_hash = reverse %any_hash;

3.大箭頭符號(hào)(=>)

當(dāng)給hash賦值時(shí),有時(shí)并不明顯哪些元素是keys,那些是values,因此發(fā)明了大箭頭符號(hào)(=>)。在需要逗號(hào)的時(shí)候,都可以使用大箭頭符號(hào)替換。
如:
 

  1. my %last_name = (  
  2. "www" => 1,  
  3. "eee" => 2,  
  4. ); 

三、Perl Hash函數(shù)

某些有用的函數(shù)可以對(duì)整個(gè)hash 進(jìn)行操作。

1.keys和values函數(shù)

keys函數(shù)會(huì)返回此hash的所有keys,values函數(shù)將返回所有的values。如果hash中沒(méi)有元素,則此函數(shù)將返回空列表。
 

  1. my %hash = ("a"=>1, "b"=>2, "c"=>3);  
  2. print my @k = keys %hash;  
  3. print my @v = values %hash; 

2.each函數(shù)

如果想迭代hash的每一個(gè)元素,一種通常的方法是使用each函數(shù),它將返回key/value對(duì)應(yīng)的2個(gè)元素列表。
當(dāng)對(duì)同一個(gè)hash 函數(shù)進(jìn)行一次迭代時(shí),將返回下一個(gè)key/value對(duì),直到所有的元素均被訪問(wèn)。如果沒(méi)有更多的key/value對(duì),則each函數(shù)將返回空表。
 

  1. my %hash = ("a"=>1, "b"=>2, "c"=>3);  
  2. while(($key, $value) = each %hash)  
  3. {  
  4. print "$key => $value\n";  


當(dāng)然,each返回的key/vlaue對(duì),順序是混亂的(它其順序和keys和values函數(shù)返回的順序相同)。如果想將其按序排放,可以對(duì)它們排序(使用sort)。
 

  1. my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);  
  2. foreach $key (sort keys %hash)  
  3. {  
  4. $value =$hash{$key};  
  5. print "$key => $value\n";  

四、Perl Hash的通常用法

1.exists函數(shù)

要查看hash中是否存在某個(gè)key,可以使用exists函數(shù),如果hash中存在此key,則返回true,與是否有對(duì)應(yīng)的value無(wú)關(guān)。
 

  1. my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);  
  2. if(exists $hash{'a'})  
  3. {  
  4. print "true";  

2.delete 函數(shù)

delete函數(shù)將某個(gè)給定的key(包括其對(duì)應(yīng)的value)從hash中刪除。如果不存在這個(gè)key,則什么也不做,不會(huì)有警告或者錯(cuò)誤信息。
 

  1. my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);  
  2. delete $hash{'a'};  
  3. foreach $key (sort keys %hash)  
  4. {  
  5. $value =$hash{$key};  
  6. print "$key => $value\n";  

3.Perl Hash 元素的內(nèi)插

你可以在雙引號(hào)的字符串中使用單個(gè)hash元素,但不支持整個(gè)hash 的內(nèi)插。
 

  1. my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);  
  2. foreach $key (sort keys %hash)  
  3. {  
  4. print "$key => $hash{$key}\n";  
  5. }  

 【編輯推薦】

  1. 常見(jiàn)Perl Hash用法指導(dǎo)
  2. Perl學(xué)習(xí)筆記----Perl命令行
  3. Perl數(shù)組和引用使用指導(dǎo)
  4. Perl基礎(chǔ) 解析Perl標(biāo)量和數(shù)組概念
  5. Perl模式匹配中的特殊字符用法指南
責(zé)任編輯:佚名 來(lái)源: csdn.net
相關(guān)推薦

2010-07-20 16:19:54

Perl

2010-07-22 09:12:05

Perl正則表達(dá)式

2010-07-23 14:12:14

Perl Hash

2010-07-26 14:45:17

Perl Hash

2009-07-08 15:12:48

Java Servle

2014-05-26 15:35:55

Web組件Web Compone

2010-08-03 13:06:15

Flex Builde

2013-08-29 14:12:52

Storm分布式實(shí)時(shí)計(jì)算

2014-12-31 11:11:52

DockerDocker基本命令

2011-09-02 10:59:10

jQuery Mobi

2013-06-24 13:38:34

HTML5 DataList

2018-03-22 14:59:13

Docker入門(mén)容器

2010-06-18 16:56:50

UML建模語(yǔ)言

2010-05-21 12:50:45

Subversion快

2010-06-13 09:45:35

Widget開(kāi)發(fā)

2011-07-21 10:29:18

iPhone 開(kāi)發(fā)

2012-05-10 08:29:46

XcodeiOSPhoneGap

2010-08-03 14:37:30

Flex入門(mén)教程

2010-07-27 15:53:15

2013-08-29 14:28:09

StormHadoop
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕免费在线 | 欧美一区二区三区国产 | 久久久www | 日韩免费网站 | 一本大道久久a久久精二百 欧洲一区二区三区 | 日韩区| 黄色一级毛片免费看 | 久久一起草 | 精品国产一区二区三区在线观看 | 欧美日韩国产不卡 | 亚洲视频在线免费观看 | 欧美成人在线影院 | 国产精品国产自产拍高清 | 在线免费观看视频你懂的 | 日日操操| 精品国产一区二区三区成人影院 | 在线观看黄色电影 | 免费在线观看av片 | 福利片在线 | 日韩成人一区 | 免费久久精品 | 国产精品亚洲视频 | 中文二区 | 日本精a在线观看 | 美女拍拍拍网站 | 国产一区不卡在线观看 | 亚洲欧美日韩电影 | 欧美日韩一区二区三区在线观看 | 国产免费人成xvideos视频 | 午夜视频在线 | 国产成人一区二区三区 | 国产亚洲一区二区在线观看 | 91精品亚洲| 自拍 亚洲 欧美 老师 丝袜 | 国产精品久久毛片av大全日韩 | 中文二区 | 亚洲福利视频网 | 欧美日韩精品区 | 天堂av中文在线 | 国产欧美精品一区二区色综合朱莉 | 99久久精品国产一区二区三区 |