Perl自學(05) 雜湊

2021-10-08 07:35:24 字數 3205 閱讀 4648

(本文參考部落格)

對於資料儲存而言個人鍵值對可以說是很多場景,更是費長方便的儲存方式,要遠遠比傳統的數字索引的方式通過陣列處理資料的要方便很多很多的。下面介紹 perl 中的雜湊。

雜湊是 perl 的一種資料型別,比較類似陣列,用於存放資料,包括2部分關鍵字keys和值value(即鍵值對)。不同於傳統陣列,雜湊訪問元素的是按照key => value(key 對應去找 value)。

其中 key 可以是任意的字串,你可以使用任何的字串作為 key,但它們是唯一的。 乙個 key 可以對應多個 value。

雜湊是key/value對的集合。

perl中雜湊變數以百分號 (%) 標記開始。訪問雜湊元素格式:$。以下是乙個簡單的雜湊例項:

#!/usr/bin/perl

%data = ('a', 'a.com', 'b', 'b.com', 'c', 'c.com');

print "\$data = $data\n";

print "\$data = $data\n";

print "\$data = $data\n";

輸出結果:

乙個鍵對應乙個值,乙個乙個對應建立:

$ha_xi = 'a.com';

$ha_xi = 'b.com';

$ha_xi = 'c.com';

與陣列一樣,可以使用列表進行建立:

%data = ('a', 'a.com', 'b', 'b.com', 'c', 'c.com');
也可以使用符號: => ;該符號處於鍵和值的之間(=> 是perl運算子)。例如:

%data = ('a'=>'a.com', 'b'=>'b.com', 'c'=>'c.com');
以下例項是上面例項的變種,使用-來代替引號:(使用這種方式 key 不能出現空格,讀取元素方式為:)

%data = (-a=>'a.com', -b=>'b.com', -c=>'c.com');
讀取的方式也很不同:

$val = $data

$val = $data

訪問雜湊元素格式:$,注意:雜湊為大括號,陣列為方括號,鍵為字串

$hash_name

你可以像陣列一樣從雜湊中提取值。

雜湊值提取到陣列語法格式:@。例如:

#!/uer/bin/perl

%data = (-a=> 45, -b=> 30, -c=> 40);

@array = @data;

print "array : @array\n";

輸出結果: 

@key = keys%hash;       #返回鍵列表

@value = values%hash; #返回值列表,與key順序一致

$num = keys %hash; #返回鍵值對的個數

#perl雜湊獲取key和value

#!/uer/bin/perl

%data = (-a=> 45, -b=> 30, -cc=> 40);

@key = keys%data;

@value = values%data;

$number = keys%data;

print "key = @key\n";

print "value = @value\n";

print "number = $number\n";

輸出結果:(想得到具體哪個可以通過索引進行訪問,類似 $key[0])

%data = (-a=> 45, -b=> 30, -cc=> 40);

exists $data ; #判斷是否存在aa鍵;返回值是真假,一般放在if語句中

新增 key/value 對可以通過簡單的賦值來完成。但是刪除雜湊元素你需要使用delete函式:

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

#!/usr/bin/perl

%data = ('a'=>'a.com', 'b'=>'b.com', 'c'=>'c.com');

@keys = keys %data;

$size = @keys;

print "ha_size_1: $size\n";

# 新增元素

$data = 'd.com';

@keys = keys %data;

$size = @keys;

print "ha_size_2: $size\n";

# 刪除雜湊中的元素

delete $data;

@keys = keys %data;

$size = @keys;

print "ha_size_3: $size\n";

輸出結果:

雜湊的迭代基本是使用 foreach 和 while 來迭代雜湊:

#!/usr/bin/perl

%ha_xi= ('a'=>'a.com', 'a'=>'a.com', 'a'=>'a.com');

foreach $key (keys %data)\n";

}

#!/usr/bin/perl

%ha_xi= ('a'=>'a.com', 'a'=>'a.com', 'a'=>'a.com');

while(($key, $value) = each(%data))\n";

}

輸出結果:

a.com

b.com

c.com

Perl筆記 05 雜湊

雜湊是一種資料結構,和陣列相比 相同在於 可以容納很多值 沒有上限 並能隨機訪問。區別在於 不像陣列是以數字來檢索,雜湊是以名字來檢索。也就是說檢索用的鍵不是數字,而是保證唯一的字串 所謂鍵其實就是字串,所以我們不必用數字3來獲取陣列元素,而是用vilma這個名字來訪問雜湊元素。這些鍵可以是任何字串...

Perl 遍歷雜湊

我們在遍歷二維或多維的雜湊時,可以採用遞迴的方法.1.首先檢視每個value的值型別,如hash,array,還是簡單的標量 2.如果value的值型別是hash,則遞迴直到找到相應的array 或者標量 3.如果value的值型別是array,則通過迴圈列印出各個元素 4.如果value的值型別是...

Perl 學習筆記 05

1 鍵盤輸入 2 所有輸入 3 argv argv儲存輸入的所有引數 4 printf 符號意義 g輸出數字 d十進位制整數 x十六進製制 o八進位制 s字串 f截尾 輸出百分比 5 控制代碼 檔案控制代碼,所有字母大寫。但不能和系統內建的衝突 stdin stdout stderr data ar...