當前位置:
首頁 > 知識 > Perl 哈希

Perl 哈希

哈希是 key/value 對的集合。

Perl中哈希變數以百分號 (%) 標記開始。

訪問哈希元素格式:${key}

以下是一個簡單的哈希實例:

實例

#!/usr/bin/perl%data = ("google", "google.com", "runoob", "runoob.com", "taobao", "taobao.com");
print"$data{"google"} = $data{"google"}
";print"$data{"runoob"} = $data{"runoob"}
";print"$data{"taobao"} = $data{"taobao"}
";

執行以上程序,輸出結果為:

Perl 哈希



創建哈希

創建哈希可以通過以下兩種方式:

一、為每個 key 設置 value

$data{"google"} = "google.com";$data{"runoob"} = "runoob.com";$data{"taobao"} = "taobao.com";

二、通過列表設置

列表中第一個元素為 key,第二個為 value。

%data = ("google", "google.com", "runoob", "runoob.com", "taobao", "taobao.com");

也可以使用 => 符號來設置 key/value:

%data = ("google"=>"google.com", "runoob"=>"runoob.com", "taobao"=>"taobao.com");

以下實例是上面實例的變種,使用 - 來代替引號:

%data = (-google=>"google.com", -runoob=>"runoob.com", -taobao=>"taobao.com");

使用這種方式 key 不能出現空格,讀取元素方式為:

$val = $data{-google}$val = $data{-runoob}


訪問哈希元素

訪問哈希元素格式:${key},實例如下:

實例

#!/usr/bin/perl%data = ("google"=>"google.com", "runoob"=>"runoob.com", "taobao"=>"taobao.com");
print"$data{"google"} = $data{"google"}
";print"$data{"runoob"} = $data{"runoob"}
";print"$data{"taobao"} = $data{"taobao"}
";

執行以上程序,輸出結果為:

Perl 哈希



讀取哈希值

你可以像數組一樣從哈希中提取值。

哈希值提取到數組語法格式:@{key1,key2}

實例

#!/uer/bin/perl%data = (-taobao =>45, -google =>30, -runoob =>40);
@array = @data{-taobao, -runoob};
print"Array : @array
";

執行以上程序,輸出結果為:

Array : 45 40


讀取哈希的 key 和 value

讀取所有key

我們可以使用 keys 函數讀取哈希所有的鍵,語法格式如下:

keys %HASH

該函數返回所有哈希的所有 key 的數組。

Perl 哈希

實例

#!/usr/bin/perl %data = ("google"=>"google.com", "runoob"=>"runoob.com", "taobao"=>"taobao.com");
@names = keys%data;
print"$names[0]
";print"$names[1]
";print"$names[2]
";

執行以上程序,輸出結果為:

taobao
google
runoob

類似的我們可以使用 values 函數來讀取哈希所有的值,語法格式如下:

values %HASH

該函數返回所有哈希的所有 value 的數組。

實例

#!/usr/bin/perl %data = ("google"=>"google.com", "runoob"=>"runoob.com", "taobao"=>"taobao.com");
@urls = values%data;
print"$urls[0]
";print"$urls[1]
";print"$urls[2]
";

執行以上程序,輸出結果為:

taobao.com
runoob.com
google.com


檢測元素是否存在

如果你在哈希中讀取不存在的 key/value 對 ,會返回 undefined 值,且在執行時會有警告提醒。

為了避免這種情況,我們可以使用 exists 函數來判斷key是否存在,存在的時候讀取:

實例

#!/usr/bin/perl%data = ("google"=>"google.com", "runoob"=>"runoob.com", "taobao"=>"taobao.com");
if(exists($data{"facebook"})){print"facebook 的網址為 $data{"facebook"}
";}else{print"facebook 鍵不存在
";}

執行以上程序,輸出結果為:

facebook 鍵不存在

以上代碼中我們使用了 IF...ELSE 語句,在後面的章節我們會具體介紹。



獲取哈希大小

哈希大小為元素的個數,我們可以通過先獲取 key 或 value 的所有元素數組,再計算數組元素多少來獲取哈希的大小,實例如下:

實例

#!/usr/bin/perl%data = ("google"=>"google.com", "runoob"=>"runoob.com", "taobao"=>"taobao.com");
@keys = keys%data;$size = @keys;print"1 - 哈希大小: $size
";
@values = values%data;$size = @values;print"2 - 哈希大小: $size
";

執行以上程序,輸出結果為:

1 - 哈希大小: 32 - 哈希大小: 3


哈希中添加或刪除元素

添加 key/value 對可以通過簡單的賦值來完成。但是刪除哈希元素你需要使用 delete 函數:

實例

#!/usr/bin/perl%data = ("google"=>"google.com", "runoob"=>"runoob.com", "taobao"=>"taobao.com");@keys = keys%data;$size = @keys;print"1 - 哈希大小: $size
";
# 添加元素$data{"facebook"} = "facebook.com";@keys = keys%data;$size = @keys;print"2 - 哈希大小: $size
";
# 刪除哈希中的元素delete$data{"taobao"};@keys = keys%data;$size = @keys;print"3 - 哈希大小: $size
";

執行以上程序,輸出結果為:

1 - 哈希大小: 32 - 哈希大小: 43 - 哈希大小: 3

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

PHP程序的JSON
jQuery 效果-滑動

TAG:程序員小新人學習 |