2010-08-04 22 views
8

Gibt es eine Funktion, die bei Perl den Referenztyp zu überprüfen:Wie bekomme ich den Referenztyp?

my $ref=\@array; 

Ich brauche den Referenztyp als array durch die Funktion zu erhalten.

+2

mögliche Duplikate von [Wie kann ich feststellen, welcher Werttyp in einer Perl-Variablen enthalten ist?] (Http://stackoverflow.com/questions/1731333/how-do-i-tell-what-type-of-value -is-in-a-perl-variable) – Ether

Antwort

22

Verwenden Funktion ref:

$ref_type = ref $ref; 

Der Rückgabewert ist derjenige von: SCALAR, ARRAY, HASH, CODE (Verweis auf Unterprogramm), KLACKS (Referenz auf typeglob) und REF (Verweis auf Referenz).

Tatsächlich ref Funktion kann mehr Werte zurückgeben und im Falle der Verweisung auf das Objekt den Namen des Pakets zurückgibt anstelle des Typs: http://perldoc.perl.org/functions/ref.html.

+7

Beachten Sie, dass die Referenz gesegnet wurde, ref() gibt den Paketnamen zurück, nicht den zugrunde liegenden Datentyp. In solchen Fällen könnten Sie die Verwendung von Scalar :: Utils reftype und selfed-Methoden in Erwägung ziehen. – dwarring

+1

@snoopy Obwohl es meistens sinnvoller ist, den Paketnamen (Klasse) des Objekts zu kennen. Und Sie sollten die Objekteinbauten auch nicht manuell manipulieren. – slebetman