Perl:当我们将一个常量值赋给引用变量而不是变量的地址时会发生什么?

时间:2014-02-20 15:27:22

标签: perl reference

   Example:
    #! /usr/bin/perl -w

    $$var=10;
    print "Variable is containing $$var and is of type ". ref($$var)."\n";

    Output:
    $perl testRefVar.pl
    Variable is containing 10 and is of type

此处变量$$ var不是指任何其他变量,而是指常量。那么使用'$$'为变量添加前缀有什么意义吗?

2 个答案:

答案 0 :(得分:3)

这与将任何其他变量设置为10相同,只是访问是间接的。

perl将 autovivify 一个匿名标量变量,并将引用分配给$var,以便可以完成此操作。如果您打印$var,您将获得类似SCALAR(0x3ecec4)的内容。

要做到这一点,你可以写

my $temp;
my $var = \$temp;
$$var = 10;

将10分配给变量$temp

相反,如果您将$var设置为对常量的引用,就像这样

my $var = \99;
$$var = 10;

你会收到错误信息

Modification of a read-only value attempted

因为在这种情况下$var引用常量而不是变量

答案 1 :(得分:2)

此处,$var是对标量的引用,$$var是标量本身。除非您的代码特别需要引用,否则间接(当您需要实际标量时需要使用两个美元符号)至少是一个麻烦的麻烦。