我还在学习perl
对于我来说,引用散列而不是直接访问它们感觉更“自然”,因为它更容易传递对子的引用(可以传递一个变量而不是列表).一般来说,我喜欢这种方法,即直接访问%散列的方法.
问题是,在哪里(在什么情况下)更好地使用普通的%散列,所以
$hash{key} = $value;@H_301_7@代替
$href->{key} = $value@H_301_7@是否有任何速度,或任何其他“事情”谁更喜欢使用%散列,而不是$hashrefs?或者只是纯粹的个人品味和TIMTOWTDI?一些例子,何时更好地使用%hash?
解决方法
我认为这样的问题是非常合法的:Perl或C等编程语言已经走了很长的路,积累了大量的历史行李,但人们通常会从历史的同步曝光中学习.因此,他们不禁想知道为什么TIMTOWDI和WTF都是这些选择,什么是更好的,应该是什么?
所以,在版本5之前,Perl没有引用.它只有值类型.参考文献是Perl 4的附件,可以编写更多的内容.必须保留价值类型,当然要保持向后兼容性;并且为了简单起见,因为经常你不需要引用的间接.
回答你的问题:
不要浪费时间考虑Perl哈希列表的速度.他们很快它们是内存访问.访问数据库或文件系统或网络,这就是程序通常花费时间的地方.
在理论上,一个引用的操作应该花费一点时间,所以不要紧.
如果你好奇,那么benchmark.不要从分歧中得出太多的结论,你可能会看到.在另一个版本中,事情可能会有所不同.
所以没有速度的理由来支持对价值类型的引用,反之亦然.
还有其他原因吗我会说这是一个风格和品位的问题.就个人而言,我更喜欢语法 – >存取.