2017-08-10 4 views
-3

まず、私はPerlで初心者です。私はこのコードが何を意味するのか知りたいです。

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

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

私はそれが関数であることを知り、var1は関数の最初の引数であり、var2は2番目の引数です。しかし、if文の$$はどういう意味ですか?

つまり、$ var1はハッシュですか?

+0

いいえ、 '$ var1'はハッシュではありません。ハッシュ検索括弧はありません。 '$ var1'はスカラへの参照であることを意味します。 –

+1

@DaveCrossは答えですか? – ysth

答えて

2

$$var1は、${ $var1 }の略です。

$NAMEおよび$BLOCKは、スカラーにアクセスするための構文であり、ハッシュではありません。

$NAME変数に直接アクセスしてください。

$BLOCKは、参照を介して間接的に変数にアクセスします。

したがって、

  • $var1はスカラーです。
  • $var1は、それが(このサブがするように)スカラーへの参照を使用することが本当に奇妙だとスカラー(例えば$var1 = \$var2;

ノートへの参照を含むようにすることが期待されます。

関連する問題