Si se desea controlar las interrupciones que puedan ocurrir
durante la entrada podemos establecer un código que maneje la señal
INT
, la cual es producida cuando se teclea CTRL-C
.
El manejador debe ser una subrutina o una referencia a una subrutina.
He aqui un ejemplo:
lhp@europa:~/projects/perl/src/perltesting$ cat -n io.pl 1 #!/usr/bin/perl -w 2 use strict; 3 4 $SIG{INT} = sub { 5 print "¡Que forma tan violenta de terminar!\n"; 6 exit(1); 7 }; 8 9 print "Tu nombre: "; 10 my $x = <>; 11 chomp($x); 12 print "Hola $x\n";
Aun cuando es adelantar mucho, la expresión $SIG{INT}
denota
la entrada INT
del hash/diccionario %SIG
.
Un hash puede verse como una tabla con dos columnas, donde la de la izquierda
almacena las claves y la de la derecha los valores.
Una variable hash
se prefija con el sımbolo %
.
%a = ( 'x', 5, 'y', 3); # llena 2 elementos del hash
Los elementos individuales de un hash
se acceden prefijando el nombre del hash
de un $
seguido de la clave entre llaves:
%a = ( 'x', 5, 'y', 3); $a{x} = 7; print $a{x}; # imprime: 7 print $a{'x'}; # imprime: 7 print $a{'y'}; # imprime: 3
En el interior de las llaves, si la clave es un identificador (incluyendo el guión bajo) se pueden omitir las comillas:
La palabra sub
seguida de un código retorna un escalar que es
una referencia a una subrutina
cuya implementación viene dada por dicho código. Vea el siguiente ejemplo
con el depurador:
casiano@tonga:/tmp$ perl -wde 0 main::(-e:1): 0 DB<1> $x = sub { print "Hola mundo\n" } DB<2> $x->() Hola mundo
Si ejecutamos el programa de ejemplo anterior obtenemos una salida como:
lhp@europa:~/projects/perl/src/perltesting$ ./io.pl Tu nombre: Juan Hola JuanSi presionamos
CTRL-C
se produce la salida:
lhp@europa:~/projects/perl/src/perltesting$ ./io.pl Tu nombre: ¡Que forma tan violenta de terminar!
Casiano Rodríguez León