亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

Perl 哈希Hash用法之入門教程

2020-10-31 15:17:57
字體:
來源:轉載
供稿:網友

一、什么是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{$some_key}
這和訪問數組元素的方法有些類似,這里下標(key)上使用的是花括號({}),而不是方括號([ ])?,F在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)  
{  
print "$key => $value/n";  

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

復制代碼 代碼如下:

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函數

要查看hash中是否存在某個key,可以使用exists函數,如果hash中存在此key,則返回true,與是否有對應的value無關。

復制代碼 代碼如下:

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

2.delete 函數

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

復制代碼 代碼如下:

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 元素的內插

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

復制代碼 代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲va欧美va国产综合剧情| 亚洲国产精品美女| 91影院在线免费观看视频| 欧美日韩免费一区| 国产亚洲精品高潮| 国产精品欧美日韩| 久热在线中文字幕色999舞| 久久韩剧网电视剧| 国产精品成久久久久三级| 国产成人综合精品在线| 久久人人爽人人爽人人片av高请| 久久久免费观看| 日本一区二区三区在线播放| 久久国产精品影视| 国产精品久久久久久久app| 亚洲福利视频在线| 亚洲第一av网站| 国产精品色视频| 国产精品一区二区三区久久久| 国产成人鲁鲁免费视频a| 欧美午夜电影在线| 精品国内产的精品视频在线观看| 日韩精品高清视频| 日韩精品欧美国产精品忘忧草| 热久久美女精品天天吊色| 欧美成人激情在线| 国产精品免费久久久久影院| 日韩在线观看免费全集电视剧网站| 国产精品永久免费视频| 日韩中文字幕在线免费观看| 亚洲国产黄色片| 亚洲深夜福利在线| 亚洲free性xxxx护士hd| 欧美与欧洲交xxxx免费观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 68精品国产免费久久久久久婷婷| 日韩精品999| 国产精品香蕉av| 久久91亚洲人成电影网站| 在线亚洲欧美视频| 久久影视三级福利片| 亚洲视频免费一区| 国产91精品最新在线播放| 黑人狂躁日本妞一区二区三区| 国产视频精品一区二区三区| 国产日韩精品入口| 国产色婷婷国产综合在线理论片a| 91丝袜美腿美女视频网站| 中文字幕不卡在线视频极品| 91精品国产高清久久久久久久久| 精品无人国产偷自产在线| 欧美中文字幕在线播放| 亚洲va久久久噜噜噜久久天堂| 国产成人一区二区三区电影| 国产成人av网| 欧美xxxx18国产| 亚洲激情电影中文字幕| 神马国产精品影院av| 亚洲香蕉成人av网站在线观看| 日本乱人伦a精品| 秋霞成人午夜鲁丝一区二区三区| 少妇av一区二区三区| 色婷婷av一区二区三区在线观看| 岛国av一区二区| 亚洲va欧美va国产综合久久| 午夜精品福利电影| 亚洲精品福利免费在线观看| 国外视频精品毛片| 午夜精品一区二区三区在线视频| 欧美在线精品免播放器视频| 国产精品极品美女粉嫩高清在线| 欧美精品第一页在线播放| 51久久精品夜色国产麻豆| 欧洲成人午夜免费大片| 日韩美女免费视频| 欧美成人激情视频免费观看| 中文字幕日韩高清| 欧美乱大交做爰xxxⅹ性3| 成人黄色短视频在线观看| 日韩精品日韩在线观看| 亚洲一区二区三区四区在线播放| 国产成人精品久久久| 国产91色在线免费| 精品国产依人香蕉在线精品| xvideos亚洲人网站| 国产一区二区日韩精品欧美精品| 色哟哟亚洲精品一区二区| 国产裸体写真av一区二区| 成人黄色大片在线免费观看| 成人中文字幕在线观看| 欧美成人四级hd版| 欧美裸身视频免费观看| www.亚洲一区| 日韩中文字幕在线视频播放| 亚洲男人天堂2023| 欧美在线视频一二三| 亚洲天堂视频在线观看| 欧美激情欧美激情在线五月| 日韩美女免费观看| 在线观看久久av| 日韩国产精品亚洲а∨天堂免| 亚洲国产91精品在线观看| 国产精品香蕉国产| 欧美成人精品一区| 国产精品69久久| 国产成人涩涩涩视频在线观看| 日韩成人av在线播放| 色悠悠久久久久| 国产精品久久久久久av福利| 欧美性生交大片免费| 97视频在线观看亚洲| 欧美在线xxx| 国产精品美女免费| 91亚洲精品一区| 在线成人激情黄色| 亚洲国产中文字幕在线观看| 美女久久久久久久久久久| 一区二区三区精品99久久| 4438全国成人免费| 亚洲欧洲日本专区| 国产视频自拍一区| 欧美小视频在线| 国产精品免费视频xxxx| 韩国精品久久久999| 久久久999精品视频| 国产精品影片在线观看| 久久人体大胆视频| 中文字幕日韩综合av| 亚洲va久久久噜噜噜久久天堂| 亚洲欧洲国产伦综合| 亚洲欧美日韩图片| 精品国产1区2区| 国产脚交av在线一区二区| 136fldh精品导航福利| 亚洲free嫩bbb| 国产性色av一区二区| 国产精品综合久久久| 中日韩午夜理伦电影免费| 2024亚洲男人天堂| 91在线观看免费观看| 欧美香蕉大胸在线视频观看| 欧美亚洲午夜视频在线观看| 91在线中文字幕| 欧美性猛交xxxx免费看久久久| 亚洲激情小视频| 欧美猛交ⅹxxx乱大交视频| 91chinesevideo永久地址| 亚洲影视九九影院在线观看| 亚洲日韩欧美视频一区| 亚洲成人网久久久| 欧美性猛交xxxxx水多| 中文字幕亚洲天堂| 日韩中文娱乐网| 一本色道久久88综合亚洲精品ⅰ| 欧美在线亚洲在线| 亚洲欧美国产一区二区三区| 久久视频在线观看免费| 日韩美女在线播放| 欧美日韩国产专区| 久色乳综合思思在线视频| 在线视频日本亚洲性| 欧美在线视频免费| 久久久久久久久国产精品| 日韩中文字幕精品|