其他集锦
我承诺以10%的细节来使你得到90%的好处,那就意味着我跳过了90%的知识的细节。现在来看一下其中的重要的部分,这个比阅读手册 the perlref manpage 要容易得多,手册讨论了100%的细节。
手册 the perlref manpage中的一些集锦:
你可以对任何东西创建'引用',包括标量,函数和其他的引用。
在 使用规则 1 中,当大括号里面是一个象$aref这样的标量变量时,你可以省略掉这个大括号。例如, @$aref 和 @{$aref}是一样的,$$aref[1] 和 ${$aref}[1]是一样的。 如果你是初学者,建议你还是养成加上大括号的习惯。
下面的操作不会copy '引用'指向的数组:
$aref2 = $aref1;
你将得到两个'引用',它们都指向同一个数组。如果你修改了$aref1->[23]的值,那么你查看变量$aref2->[23]时,它也相应地变了。
要copy这个数组,你需要这样
$aref2 = [@{$aref1}];
使用符号 [...] 来创建一个新的匿名数组, 而且这个新的数组的'引用'被赋值给了$aref2 。 这个新的数组用'引用'$aref1所指向的数组的内容来初始化。
同样的,要copy一个匿名哈希,你需要这样
$href2 = {%{$href1}};
如果要判断一个变量保存的内容是不是'引用',使用函数ref 。如果它的参数是'引用',返回的值是'真'。实际上,它做得更好:如果是一个哈希的引用,它返回'HASH',如果是一个数组的引用,那么就返回'ARRAY'。
如果你想像字符串一样使用'引用'的话,你得到的字符串就像
ARRAY(0x80f5dec) or HASH(0x826afc0)
如果看到一个像这样的字符串,你应该知道你错误地输出了一个'引用'。
这种显示方式的另一个作用是你可以用eq来比较两个'引用',看它们是不是指向相同的东西。(你通常可以使用 == 来比较,因为它更会)
你
可以像使用'引用'一样来使用一个字符串。如果你使用"foo"作为一个数组的'引用',它就是指向数组 @foo的一个引用。这被称为'软引用'或‘符
号引用 '。 使用申明 use strict 'refs' 可以取消这个功能,如果你不小心使用了它,会导致各种可能的错误。
阅读(224) | 评论(0) | 转发(0) |