Estoy en el descanso de las clases en este momento y decidí pasar el tiempo aprendiendo Perl. Estoy trabajando con Beginning Perl (http://www.perl.org/books/beginning-perl/) y estoy terminando los ejercicios al final del capítulo tres.Estoy buscando alguna aclaración sobre chomp
Uno de los ejercicios solicitó que "almacene sus números telefónicos importantes en un hash." Escriba un programa para buscar números por el nombre de la persona ".
De todos modos, yo había llegado con esto:
#!/usr/bin/perl
use warnings;
use strict;
my %name_number=
(
Me => "XXX XXX XXXX",
Home => "YYY YYY YYYY",
Emergency => "ZZZ ZZZ ZZZZ",
Lookup => "411"
);
print "Enter the name of who you want to call (Me, Home, Emergency, Lookup)", "\n";
my $input = <STDIN>;
print "$input can be reached at $name_number{$input}\n";
Y simplemente no funcionaría. Seguí recibiendo este mensaje de error: (.)
Uso del valor no inicializado en la concatenación o cuerda en hello.plx línea 17, línea 1
He intentado jugar con el código un poco más, pero cada "solución" parecía más compleja que la "solución" anterior. Finalmente, decidí verificar las respuestas.
La única diferencia entre mi código y la respuesta fue la presencia de chomp ($input);
después de <STDIN>;
.
Ahora, el autor ha usado chomp
en el ejemplo anterior pero realmente no cubrió lo que chomp
estaba haciendo. Por lo tanto, he encontrado esta respuesta en www.perlmeme.org:
La función
chomp()
eliminará (por lo general) cualquier carácter de nueva línea de el final de una cadena. La razón por la que decimos por lo general es que en realidad elimina cualquier carácter que coincide con el valor actual de$/
(la entrada separador de registro), y$/
por defecto a una nueva línea ..
De todos modos, mis preguntas son :
¿Qué nuevas líneas se están eliminando? ¿Perl agrega automáticamente un
"\n"
a la entrada de<STDIN>
? Estoy un poco confuso porque cuando leí "realmente elimina cualquier personaje que coincida con el valor actual de$/
", no puedo evitar pensar "No recuerdo haber puesto$/
en ningún lugar de mi código".Me gustaría desarrollar las mejores prácticas lo antes posible. ¿Es mejor incluir siempre
chomp
después de<STDIN>
o hay situaciones en las que no es necesario?
'perldoc -f chomp' o [perlfunc] (http://perldoc.perl.org/perlfunc.html) –
bien, así que la entrada chomp en de Perlmeme FAQ (http: //www.perlmeme.org/faqs/manipulating_text/chomp.html) responde la mayor parte de mi primera pregunta. Es decir, las preguntas frecuentes me llevan a creer que Perl hace automáticamente una nueva línea (no necesariamente en "\ n" sino una nueva línea). ¿Pero estoy entendiendo eso correctamente? – krebshack
Continuando con el enlace de perlfunc: [chomp] (http://perldoc.perl.org/functions/chomp.html) que cubre el uso del separador. –