Perl 雜湊Hash用法之入門教程

2022-09-28 06:48:11 字數 3014 閱讀 3236

一、什麼是perl hash

雜湊是一種資料結構,和陣列類似,可以將值存放到其中,或者從中取回值。但是,和陣列不同的是,其索引不是數字,而是名字。也就是說,索引(這裡,我們將它叫key)不是數字而是任意的唯一的字串。

key可以是任意的字串,你可以使用任何的字串作為key,但它們是唯一的。

另一種思考hash 的方法是,把它看作一堆資料(a barrel of data),每乙個資料都有乙個相應的標籤。可以通過標籤訪問此標籤對應的元素。但其中是沒有「第乙個」元素的概念的。在陣列中,陣列元素從0,perl學習之雜湊hash_馬亮的計算機技術1,2 開始編號。但在hash中,沒有確定的順序,因此也沒有第乙個元素。只是一些key/value 對的集合。

keys和values均為任意的標量,但keys通常轉換為字串。因此,如果將表示式50/20 作為keys,則其通常被轉換為3字元的字串「2.5」。

由於perl的「沒有不必要的限制」的設計哲學:hash可以是任意大小,從空hash(沒有key/value對),到任何你記憶體允許的大小。

keys是唯一的,但values可以重複程式設計客棧。hash的value可以是數字,字串,undef,或者它們的混合,但key是唯一的。

為什麼使用perl hash

可以把hash看作乙個簡單的資料庫,其中每乙個key下面可以有一塊資料。如果你的任務是關於:「查詢重複的」,「唯一的」,「交叉引用的」,「查詢表」,則hash很可能在這類應用中幫上perl學習之雜湊hash_馬亮的計算機技術你的忙。

二、perl hash元素的訪問

要訪問hash 元素,可以使用下面的語法:$hash

這和訪問陣列元素的方法有些類似,這裡下標(程式設計客棧key)上使用的是花括號({}),而不是方括號([ ])。現在key 的表示式是字串,而非數字。

hash的名字和perl中其它的識別符號的命名規則是一樣的(字母,數字,下劃線組成,但不能由數字開頭)。

訪問不存在的hash元素將得到undef。

1.作為整體的perl hash

要引用整個hash,使用百分號(%)作為字首。

為了方便,hash可以轉換為列表,或者反過來。

2.perl hash賦值

可以使用如下的語法在hash 之間拷貝:

%new_hash = %old_hash;

將hash轉變成其它形式更加常見。例如,我們可以將hash反**

%inverse_hash = reverse %any_hash;

3.大箭頭符號(=>)

當給hash賦值時,有時並不明顯哪些元素是keys,那些是values,因此發明了大箭頭符號(=>)。在需要逗號的時候,都可以使用大箭頭符號替換。

如:複製** **如下:

my %last_name = (  

"www" => 1,  

"eee" => 2,  

); 

三、perl hash函式

某些有用的函式可以對整個hash 進行操作。

1.keys和values函式

keys函式會返回此hash的所有keys,values函式將返回所有的values。如果hash中沒有元素,則此函式將返回空列表。

複製** **如下:

my %hash = ("a"=>1, "b"=>2, "c"=>3);  

print my @k = keys %hash;  

print my @v = values %hash; 

2.each函式

如果想迭代hash的每乙個元素,一種通常的方法是使用each函式,它將返回key/value對應的2個元素列表。

當對同乙個hash 函式進行一次迭代時,將返回下乙個key/value對,直到所有的元素均被訪問。如果沒有更多的key/value對,則each函式將返回空表。

複製** **如下:

my %hash = ("a"=>1, "b"=>2, "c"=>3);  

while(($key, $value) = each %hash)  

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

複製** **如下:

my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);  

foreach $key (sort keys %hash)  

;  

print "$key => $value\n";  

}  四、perl hash的通常用法

1.exists函式

要檢視hash中是否存在某個key,可以使用exists函式,如果hashwww.cppcns.com中存在此key,則返回true,與是否有對應的value無關。

複製** **如下:

my %hash = ("a"=>1, "b"=>2, "c"=>3, lgnlcuhq"d"=>4);  

if(exists $hash)  

2.delete 函式

函式將某個給定的key(包括其對應的value)從hash中刪除。如果不存在這個key,則什麼也不做,不會有警告或者錯誤資訊。

複製** **如下:

my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);  

delete $hash;  

foreach $key (sort keys %hash)  

;  

print "$key => $value\n";  

}  3.perl hash 元素的內插

你可以在雙引號的字串中使用單個hash元素,但不支援整個hash 的內插。

複製** **如下:

my %hash = ("a"=>1, "b"=>2, "c"=>3, "d"=>4);  

foreach $key (sort keys %hash)  

\n";  

}  

本文標題: perl 雜湊hash用法之入門教程

本文位址:

perl 雜湊 hash 學習筆記( )

1.什麼是雜湊 雜湊是perl的一種資料型別,比較類似陣列,用於存放資料,包括2部分關鍵字keys和值value。不同於陣列,雜湊訪問元素的是按照名字訪問標量的key value.hash 用 來標示 2.hash 操作 a.增加 my hash 定義 第一種寫法 hash young author...

perl 雜湊 hash 學習筆記

1.什麼是雜湊 雜湊是perl的一種資料型別,比較類似陣列,用於存放資料,包括2部分關鍵字keys和值value。不同於陣列,雜湊訪問元素的是按照名字訪問標量的key value.hash 用 來標示 2.hash 操作 a.增加 my hash 定義 第一種寫法 hash young author...

Redis入門之雜湊 Hash 型別

redis提供了雜湊型別,雜湊的值是乙個field和value的對映表,而獲取雜湊的鍵與上一節中字串型別中的鍵一樣.如下圖,描述了redis中雜湊型別 鍵名為 car 2 欄位名分別有 color name price 對應的欄位名為 白色 奧迪 90萬 通過上圖可以看出 欄位和字段值構成了乙個對映...