perl程序设计(四)

/ns/wz/comp/data/20010319094011.htm


三、关联数组

关联数组和前面说的数组类似,它包含标量数据,可用索引值来单
独选择这些数据,和数组不同的是, 关联数组的索引值不是非负的整
数而是任意的标量。这些标量称为Keys,可以在以后用于检索数组中的
数值。

关联数组的元素没有特定的顺序,你可以把它们想象为一组卡片。
每张卡片上半部分是索引而下半部分是数值。

关联数组是Perl语言中特有的,关联数组是一个功能强大的数组。
使用关联数组时要在前面加上%号,关联数组的格式如:

%ARRAY=(key1,value1,key2,value2,key3,value3);

每一个key都有一个相对应的值(value)。

和数组类似,$zmd,@zmd,%zmd之间没有任何联系。Perl为对象的不
同类型保留独立的命名空间。

下面介绍关联数组的操作:

1.在关联数组中增加、更改一对数据:ARRAY={key}=value; 在关联
数组ARRAY中加上一对key-value,要在关联数组名称前加上$号,而
且key的名称要在{}符号之间,最后再指定key所对应的value值。
如果在这个关联数组中已经有这个key了.就会更改这个key所对应
的value。
2.keys(%array)操作符可生成由关联数组%array中的所有当前关键字
组成的列表。即返回奇数个元素(第1,3,5,7...个)的列表。
3.values(%array)操作符返回由关联数组%array中所有当前值组成的
列表,即返回偶数个列表。
4.echo(%array)操作符返回由一个关键字和一个值对构成的两个元素
的表。对同一数组再操作时返回下一对值直至结束。若没有更多的
对时,echo()返回空表。 (这在打印全部列表中很有用)
5.删除一对在关联数组中的数据: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关联数组置空