$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