#符号引用
通常情况下,$$var指向$var引用变量,而且使用者倾向于得到$var的内容。
但是,如果$var不是引用变量该怎么办呢?如果这样,Perl解释器就将检查$var是否包含一个字符串。如果是包含一个字符串,就将使用这个字符串作为普通的标量变量:
<!-- lang: perl -->
$x = 10;
$var = "x";
$$var = 30;
如果是这样,当我们对$$var求值的时候,首先将检查$var是否是一个引用,但$var不是,$var是一个字符串(有没有一点黑魔法的感觉?),此时Perl解释器就会再一次对表达式求值,此时$$var的值与$x相同,因此,最后的结果可以看到$$var和$x一样都是30。
注意:
- 符号引用都是作为全局变量工作的。
- use strict语句禁止符号语句的使用,此时就需要在大括号的作用域内,使用no strict 'refs'。