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
