perl 的这些 $, @, % 等代表不同的类型,你所说的是有意这么设计的,请参考这段:
@array = (1..6);
print "@array[0,2,3]";
一般当你只取数组中一个元素的时候 $array[下标] 就好了,而且前面的 $ 说明取出来的东西是个标量;
而 perl 支持 @array[index1,index2..indexN] 这种写法是为了方便你通过多个下标一起取出多个元素,而 @
正代表着取出的是一组元素或说一个列表(当然也可以只给它一个下标来取某一个元素,列表的元素个数也可以为一个嘛)
%hash = ( a=>1, b=>2);
print "@hash{'a', 'b'}";
而 %hash, 是唯一键值对的关系,一个键对应一个标量值,通过键得到的是标量值,而 %hash{'key'} 是啥?哈希的值是哈希?所以使用
$hash{'key'} 这种方式就是为了告诉你,通过某个key得到的是哈希里面对应的标量值。
当然,你也可以通过指定多个 key 来取多个值, 所以,这里你知道为啥通过多个 key 来取多个值用的是 @hash{'key1', 'key2' ..
'keyN'} 了吧?
2009/1/16 e280s <[email protected]>
> 首先声明:这只是我的一点认识,不是来招口水的,也不涉及到perl的优劣。
>
> 1. 我建立一个列表:
> @list = qw/aaa bbb ccc ddd/;
>
> 我想使...@list中的aaa,于是我可以使用:
> @list[0]或$list[0]
>
> 2. 我建立一个散列:
> %hash = (
> 'aaa' => 'aaaa',
> 'bbb' => 'bbbb',
> 'ccc' => 'cccc'
> );
> 我想使用aaaa,于是:
> $hash{'aaa'}即可。但是%hash{'aaa'}就是一个错误的用法。
>
> 疑问:是不是设计的时候设计使...@list[下标]的方式是多余的啊,而对散列没有这样一个类似的用法。
>
> 我估计大家又该说了:larry说要这样做的。^_^!
>
> 呵呵。
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina 论坛”论坛。
要在此论坛发帖,请发电子邮件到 [email protected]
要退订此论坛,请发邮件至 [email protected]
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---