Prototipo Referencia a un Escalar

Un prototipo como \$ le indica a Perl que en la llamada se debe especificar una variable escalar la cuál será convertida en la rutina en una referencia a la variable. Véase la sesión que sigue:

lhp@nereida:~/Lperl/src$ perl -wde 0
main::(-e:1):   0
  DB<1> sub r(\$) { print "@_\n" }
  DB<2> r qw{a b c}
Type of arg 1 to main::r must be scalar (not list) at (eval 6)
  DB<3> r "hola"
Type of arg 1 to main::r must be scalar (not constant item) at (eval 7)
  DB<4> $x = 4
  DB<5> r $x
SCALAR(0x842f57c)
  DB<6> r \$x
Type of arg 1 to main::r must be scalar (not single ref constructor) at (eval 10)
  DB<7> r $x, qw{a b c}
Too many arguments for main::r at (eval 11)
  DB<8> r $x, 1..3
Too many arguments for main::r at (eval 12)

Cualquier prototipo backslash (\) representa a un argumento que debe comenzar con ese carácter. De ahí las protestas del intérprete en las líneas 2, 3 y 6.

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19