next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Referencias simbólicas y typeglobs Sup: Typeglobs Ant: Ejercicio: Asignaciones a Typeglobs Err: Si hallas una errata ...

Typeglobs vistos como hashes

Perl dispone de una sintáxis especial para acceder a un ``typeglob'' como si fuera un ``hash'' indexado en el tipo de variable:
$scalar_ref = *variable{SCALAR} # $scalar_ref = \$variable
$array_ref = *variable{ARRAY} # $scalar_ref = \@variable
$hash_ref = *variable{HASH} # $scalar_ref = \%variable
$sub_ref = *variable{CODE} # $scalar_ref = \&variable

Muy interesante: podemos usar esta sintáxis para acceder a la entrada de fichero del ``typeglob'':

$handle_ref = *variable{IO}
Veamos un ejemplo con el depurador:
  DB<1> $a = 4; @a = 1..5
  DB<2> $rsa = *a{SCALAR}
  DB<3> x $rsa
0  SCALAR(0x8450e04)
   -> 4
  DB<4> open a, "matrixP.pl"
  DB<5> $rfa = *a{IO}
  DB<6> x $rfa
0  IO::Handle=IO(0x847db4c)
  DB<7> $b = <$rfa>
  DB<8> p $b
#!/usr/bin/perl -w
Usando esta sintáxis podemos construir una referencia a la componente ``hash'' partiendo de una referencia a un ``typeglob'' con una asignación como esta:
$hsh_ref = *$typeglob_ref{HASH};


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Referencias simbólicas y typeglobs Sup: Typeglobs Ant: Ejercicio: Asignaciones a Typeglobs Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21