2017-08-10 473 views
-3

首先,我是Perl的初学者。我想知道这个代码是什么意思。

sub function 
{ 
    my $var1 = shift; 
    my $var2 = shift; 

    if ($$var1) 
    { 
     #code 
    } 
    else 
    { 
     #code 
    } 
} 

我知道它是一个函数,var1是函数的第一个参数,var2是第二个参数。但是,在if语句中是什么意思?

那么这意味着$ var1是哈希?

+0

不,这并不意味着'$ var1'是一个散列。没有哈希查找括号。这意味着'$ var1'是对标量的引用。 –

+1

@DaveCross做出答案? – ysth

回答

2

$$var1${ $var1 }的简称。

$NAME$BLOCK是加密标量而不是散列的语法。

$NAME直接访问变量。

$BLOCK通过引用间接访问变量。

因此,

  • $var1是一个标量。
  • $var1预计将包含一个标(例如$var1 = \$var2;

注意的参考,这是很奇怪用来标量引用(如本次那样)。