好,回答非常精辟,醍醐灌顶。本来我以为这是设计的思想上的一点错误。
多谢cnhack!!! 2009/1/16 cnhack TNT <[email protected]> > 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 访问该论坛 -~----------~----~----~----~------~----~------~--~---
