2017-08-10 4 views
-3

Erstens bin ich Anfänger in Perl. Ich würde gerne wissen, was dieser Code bedeutet.

Ich weiß, dass es eine Funktion ist, und var1 ist das erste Argument der Funktion und var2 ist das zweite Argument. Aber was bedeutet das $$ in if-Anweisung?

Also bedeutet es, dass $ var1 Hash ist?

+0

Nein. Es bedeutet nicht, dass $ var1 ein Hash ist. Es gibt keine Hash-Lookup-Klammern. Dies bedeutet, dass $ var1 eine Referenz auf einen Skalar ist. –

+1

@DaveCross machen das eine Antwort? – ysth

Antwort

2

$$var1 ist die Abkürzung für ${ $var1 }.

$NAME und $BLOCK sind die Syntax für einen acccessing skalaren, kein Hash.

$NAME greifen Sie direkt auf eine Variable zu.

$BLOCK Zugriff auf eine Variable indirekt über eine Referenz.

Daher

  • $var1 ist ein Skalar.
  • $var1 wird erwartet, dass eine Referenz auf einen Skalar enthalten (z $var1 = \$var2;)

Beachten Sie, dass es wirklich seltsam Verweise auf Skalare zu verwenden (da dies Sub der Fall ist).