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