Wie finde ich heraus, ob der Wert einer Variablen in Perl ein Skalar oder ein Array ist?

7

Sagen Sie, ich habe das:

%Vor%

Wie kann ich später herausfinden, ob das, was gespeichert wurde, ein Skalar war, wie in "abc" , oder ein Array, wie in [1, 2, 3] ?

    
Daniel C. Sobral 08.11.2010, 20:15
quelle

2 Antworten

13

Zunächst ist Ihr Beispiel für eine Array-Referenz falsch - Ihre $hash{"b"} wird mit einem Skalarwert enden: das letzte Element der Liste, die Sie angegeben haben (in diesem Fall 'c') ).

Das heißt, wenn Sie tatsächlich sehen wollen, ob Sie einen Skalar oder eine Referenz haben, verwenden Sie die Funktion ref :

%Vor%

Google Docs

zigdon 08.11.2010, 20:18
quelle
8

Zunächst speichert $hash{"b"} = qw/a b c/; 'c' in $hash{"b"} , kein Array, Sie haben vielleicht $hash{"b"} = [ qw/a b c/ ]; gemeint, das einen Verweis auf ein Array in $hash{"b"} speichert. Dies ist das Schlüsselelement der Information. Alles andere als ein Skalar muss als Referenz gespeichert werden, wenn es einem Skalar zugewiesen wird. Es gibt eine Funktion mit dem Namen ref , die Ihnen Informationen über eine Referenz liefert, aber Ihnen den Namen gibt der Objektklasse, wenn die Referenz gesegnet wurde. Glücklicherweise gibt es eine weitere Funktion namens reftype , die immer den Typ der Struktur in Scalar::Util zurückgibt.

%Vor%     
Chas. Owens 08.11.2010 20:21
quelle

Tags und Links