關聯數組和前面說的數組類似,它包含標量數據,可用索引值來單獨選擇這些數據,和數組不同的是,關聯數組的索引值不是非負的整數而是任意的標量。這些標量稱為Keys,可以在以后用于檢索數組中的數值。
關聯數組的元素沒有特定的順序,你可以把它們想象為一組卡片。每張卡片上半部分是索引而下半部分是數值。
關聯數組是Perl語言中特有的,關聯數組是一個功能強大的數組。使用關聯數組時要在前面加上號,關聯數組的格式如:
ARRAY=(key1,value1,key2,value2,key3,value3);
每一個key都有一個相對應的值(value)。
和數組類似,$zmd,@zmd,zmd之間沒有任何聯系。Perl為對象的不同類型保留獨立的命名空間。
下面介紹關聯數組的操作:
在關聯數組中增加、更改一對數據:ARRAY={key}=value;在關聯數組ARRAY中加上一對key-value,要在關聯數組名稱前加上$號,而且key的名稱要在{}符號之間,最后再指定key所對應的value值。如果在這個關聯數組中已經有這個key了.就會更改這個key所對應的value。
keys(array)操作符可生成由關聯數組array中的所有當前關鍵字組成的列表。即返回奇數個元素(第1,3,5,7...個)的列表。
values(array)操作符返回由關聯數組array中所有當前值組成的列表,即返回偶數個列表。
echo(array)操作符返回由一個關鍵字和一個值對構成的兩個元素的表。對同一數組再操作時返回下一對值直至結束。若沒有更多的對時,echo()返回空表。(這在打印全部列表中很有用)
刪除一對在關聯數組中的數據:delete$ARRAY{key};delete是Perl所提供的函數,作用是刪除關聯數組中的一個key以及這個key所對應的value。使用方法是在delete函數之后,指定關聯數組中要刪除的key名稱。
關聯數組的綜合舉例:
fred=(one,"zmd",two,"cxm");$a=$fred{one};---#$a等于"zmd"
$b=$fred{two}---#$b等于"cxm"
$fred{two}="yes"---#fred=(one,"zmd",two,"yes")
@number=keys(fred)---#@list=(one,two)
@user=values(fred)---#@user=("zmd","cxm")
($number,$name)=echo(fred)---#此時$number的值為one,$name的值為"zmd",再執行一次$number為值為two,$name的值為"cxm")
@a=fred---#將關聯數組fred指定給數組a,這時@a=(one,"zmd",two,"cxm")
b=@a---#將數組a指定給關聯數組b,這時b=(one,"zmd",two,"cxm")
delete$fred{one}---#將關聯數組中key值為one的一對key-value刪除,這時fred=(two,"cxm")
name=()---#把name關聯數組置空