$ra = \$a; # referencia a escalar $rb = \@b; # referencia a arreglo $rc = \%c; # referencia a hash $rx = \$rb; # referencia a referencia $rf = \&f; # referencia a función ref ( $ra ); # devuelve "SCALAR" ref ( $rb ); # devuelve "ARRAY" ref ( $rc ); # devuelve "HASH" ref ( $rx ); # devuelve "REF" ref ( $rf ); # devuelve "CODE"Si el operando de
ref
no es una referencia, ref
devuelve undef
.
Sobre referencias a objetos (véase 6), ref
devuelve el nombre
de la clase:
$obj = bless {}, "Foo"; $type = reftype $obj; # "Foo"
La función ref
puede ser utilizada para mejorar los mensajes de error:
die "Expected scalar reference" unless ref($slr_ref) eq "SCALAR";
Si una referencia es utilizada en un contexto
donde se espera una cadena, la función ref
es llamada automáticamente produciendo una representación hexadecimal
de la dirección del referente. Eso significa que una impresión como:
print $hsh_ref,"\n";produce algo como esto:
HASH(0X10027588)
La función reftype de Scalar::Util
funciona de manera parecida a ref EXPR
, con la diferencia
de que sobre los objetos no retorna la clase del objeto:
$type = reftype "string"; # undef $type = reftype \$var; # SCALAR $type = reftype []; # ARRAY $obj = bless {}, "Foo"; $type = reftype $obj; # HASH