2010-08-04 16 views
8

C'è qualche funzione disponibile in Perl per verificare il tipo di riferimento:Come ottenere il tipo di riferimento?

my $ref=\@array; 

ho bisogno di ottenere il tipo di riferimento come array dalla funzione.

+2

possibile duplicato di [Come faccio a sapere quale tipo di valore si trova in una variabile Perl?] (Http://stackoverflow.com/questions/1731333/how-do-i-tell-what-type-of-value -is-in-a-perl-variabile) – Ether

risposta

22

Uso funzione ref:

$ref_type = ref $ref; 

Il valore di ritorno è quello di: SCALAR, ARRAY, HASH, CODICE (riferimento al sottoprogramma), GLOB (riferimento a typeglob) e REF (riferimento a riferimento).

realtà, funzione ref può restituire più valori e in caso di riferimento all'oggetto nome del pacchetto ritorna invece di tipo: http://perldoc.perl.org/functions/ref.html.

+7

Nota che il riferimento è stato benedetto, ref() restituisce il nome del pacchetto, non il tipo di dati sottostante. In questi casi, potresti prendere in considerazione l'uso del metodo reftype e dei metodi benedetti di Scalar :: Util. – dwarring

+1

@snoopy Tuttavia, la maggior parte delle volte è più utile conoscere il nome del pacchetto (classe) dell'oggetto. E comunque non dovresti avere problemi con gli oggetti interni manualmente. – slebetman

Problemi correlati