標籤:大括弧 reverse 簡單 first exist eve 標準 字串 隨機
hash
一、關聯陣列的形式
%h=(‘a‘,1,‘b‘,2); a是key 1是value b是key 2是value
以%開頭,()為空白散列
%h=(‘a‘=>1,‘b‘=>2); 更明顯一些 用這個還可以省略引號 但預設全部都是字串 當有數位時候就不是你的本意了
元素形式:$h{‘a‘} #注意用$
元素為簡單變數,用$。 %h{2.5} %{-1} ${$ee} 都是可以的 小數 負數 簡單變數都可以是key
二、 關聯陣列的賦值
1、標準: %a=(‘a‘,1,‘b‘,2);
2、數組與散列間賦值:%[email protected] 散列也是數組 只是沒有順序
3、@a=%h 數組元素的順序隨機
4、($a,%h)[email protected] #不太會用 先把數組的第一個值放進簡單變數$a中 再把剩下的放進散列%h中 ,所以@array的個數必須是奇數
5、%h=(%first,%second) #浪費記憶體
6、%h1=(%h2,‘k‘,‘v‘) #增加一組索引值,必須成對出現
7、函數的返回,比如split()的返回結果,也可以賦值給散列:
%h=split(/,/,‘a,b,c,d‘)
8、片段:@key=(‘a‘,‘b‘,‘c‘)
@hash{@keys}[email protected]{reverse(@keys)}
#注意@不能改為$,因$hash{}中key要求是簡單變數,所以括弧裡面是一個數
而現在我想圈出一個數組,所以前面要變為@,括弧裡面也是@
都應該前後對應
如果你輸入 $hash{@keys} 因為$hash大括弧中的key要求是簡單變數 這等同於 $hash{@keys的長度} 也就是@hash{3}
三、 元素賦值與操作
1、增加: $h{‘a‘} = 1 不存在則建立,hash不存在也建立
2、刪除:delete $h{‘a‘}
3、不要用push pop shift splice 等與順序有關的函數,否則結果不可知
4、顯示:不能 print "%hash"; 這樣輸出的只是字串:%hash
如用 print %hash 則顯示無空格
用遍曆的方法來逐一顯示
5、$a=%hash $a被賦值為x x是已有的元素數/分配的記憶體數 沒什麼卵用
四、關聯陣列操作函數
key(%h) 或 key %h #返回鍵列表
value(%h) 或 value %h #傳回值列表
each(%h)迴圈: ($key,$value)=each(%hash)
迴圈中不要增加或刪除元素,因為散列是無序的。迴圈的最後返回undef
exist:查看關鍵字是否存在
exist $h{‘key‘}
undef(%h) : 刪除散列 相當於%=()
delete
Perl語言入門--5--散列、hash