欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Perl 哈希Hash用法之入門教程

 更新時(shí)間:2013年02月17日 14:39:55   作者:  
本文和大家重點(diǎn)討論一下Perl Hash的用法,哈希是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組類似,但是,和數(shù)組不同的是,其索引不是數(shù)字,而是名字。也就是說,索引(這里,我們將它叫key)不是數(shù)字而是任意的唯一的字符串

一、什么是Perl Hash

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

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

keys和values均為任意的標(biāo)量,但keys通常轉(zhuǎn)換為字符串。因此,如果將表達(dá)式50/20 作為keys,則其通常被轉(zhuǎn)換為3字符的字符串“2.5”。
由于Perl的“沒有不必要的限制”的設(shè)計(jì)哲學(xué):hash可以是任意大小,從空hash(沒有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)于:“查詢重復(fù)的”,“唯一的”,“交叉引用的”,“查詢表”,則hash很可能在這類應(yīng)用中幫上Perl學(xué)習(xí)之哈希hash_馬亮的計(jì)算機(jī)技術(shù)你的忙。

二、Perl Hash元素的存取

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

1.作為整體的Perl Hash

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

2.Perl Hash賦值

可以使用如下的語(yǔ)法在hash 之間拷貝:
%new_hash = %old_hash;
將hash轉(zhuǎ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)替換。
如:

復(fù)制代碼 代碼如下:

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

三、Perl Hash函數(shù)

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

1.keys和values函數(shù)

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

復(fù)制代碼 代碼如下:

my %hash = ("a"=>1, "b"=>2, "c"=>3);  
print my @k = keys %hash;  
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ì),直到所有的元素均被訪問。如果沒有更多的key/value對(duì),則each函數(shù)將返回空表。

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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

四、Perl Hash的通常用法

1.exists函數(shù)

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

復(fù)制代碼 代碼如下:

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

2.delete 函數(shù)

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

復(fù)制代碼 代碼如下:

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

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

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

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • cpanm安裝及Perl模塊安裝教程

    cpanm安裝及Perl模塊安裝教程

    這篇文章主要介紹了cpanm安裝及安裝Perl模塊教程,本文先是給出了cpanm的安裝教程,同時(shí)給出了Perl模塊的安裝實(shí)例,需要的朋友可以參考下
    2014-10-10
  • Perl中的控制結(jié)構(gòu)學(xué)習(xí)筆記

    Perl中的控制結(jié)構(gòu)學(xué)習(xí)筆記

    這篇文章主要介紹了Perl中的控制結(jié)構(gòu)學(xué)習(xí)筆記,本文講解了條件語(yǔ)句if、條件語(yǔ)句unless、循環(huán)語(yǔ)句while、循環(huán)語(yǔ)句until、for循環(huán)、foreach語(yǔ)句、循環(huán)控制等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • Perl中處理時(shí)間的幾個(gè)函數(shù)

    Perl中處理時(shí)間的幾個(gè)函數(shù)

    本文為大家介紹Perl中處理時(shí)間的幾個(gè)函數(shù),供大家學(xué)習(xí)參考
    2013-02-02
  • Perl學(xué)習(xí)筆記之文件操作

    Perl學(xué)習(xí)筆記之文件操作

    這篇文章主要介紹了Perl學(xué)習(xí)筆記之文件操作,本文分別給出了打開文件、讀取文件、寫入文件代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • Perl6中的垃圾收集

    Perl6中的垃圾收集

    今天小編就為大家分享一篇關(guān)于perl6垃圾收集的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Perl AnyEvent中的watcher實(shí)例

    Perl AnyEvent中的watcher實(shí)例

    這篇文章主要介紹了Perl AnyEvent中的watcher實(shí)例,關(guān)于AnyEvent請(qǐng)參閱的更多介紹請(qǐng)參閱文中的相關(guān)鏈接,需要的朋友可以參考下
    2014-09-09
  • Perl使用File::Basename獲取文件擴(kuò)展名的代碼

    Perl使用File::Basename獲取文件擴(kuò)展名的代碼

    本文為大家介紹的這個(gè)例子,實(shí)現(xiàn)了獲取/home/topgkw中所有文件后綴,其中目錄返回空值
    2013-02-02
  • perl AnyEvent簡(jiǎn)單介紹和入門知識(shí)

    perl AnyEvent簡(jiǎn)單介紹和入門知識(shí)

    這篇文章主要介紹了perl AnyEvent簡(jiǎn)單介紹和入門知識(shí),AnyEvent 是一個(gè)性能非常好的基于事件驅(qū)動(dòng)的框架,需要的朋友可以參考下
    2014-09-09
  • Perl5 OOP學(xué)習(xí)筆記

    Perl5 OOP學(xué)習(xí)筆記

    在Perl排名持續(xù)下降的情況下學(xué)Perl,似乎是有點(diǎn)不明智。但是,工作需要,不得不學(xué)啊。再說,Perl現(xiàn)在在測(cè)試領(lǐng)域還是用得非常多的。Phython雖然也在測(cè)試領(lǐng)域開始活躍起來,不過我始終還是不太喜歡Phython的語(yǔ)法。
    2009-04-04
  • perl生成特定堿基比例的隨機(jī)序列的代碼

    perl生成特定堿基比例的隨機(jī)序列的代碼

    怎么用perl程序,隨機(jī)生成一條序列,使ACGT四種堿基的含量分別為0.3,0.3,0.2,0.2!
    2013-03-03

最新評(píng)論