Clarificación en chomp

Ahora estoy tomando un descanso de las clases y decidí pasar mi 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.

Uno de los ejercicios me pidió que "almacene sus números de teléfono importantes en un hash. Escriba un programa para buscar números por el nombre de la persona".

e todos modos, se me ocurrió 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 de valor no inicializado en concatenación (.) O cadena en hello.plx línea 17, línea 1

Intenté jugar un poco más con el código, pero cada "solución" parecía más compleja que la "solución" anterior. Finalmente, decidí revisar las respuestas.

La única diferencia entre mi código y la respuesta fue la presencia dechomp ($input); después<STDIN>;.

Ahora, el autor ha usadochomp en el ejemplo anterior, pero realmente no cubrió lo quechomp estaba haciendo. Entonces, encontré esta respuesta en www.perlmeme.org

Loschomp()a función @ eliminará (generalmente) cualquier carácter de nueva línea del final de una cadena. La razón que decimos generalmente es que en realidad elimina cualquier carácter que coincida con el valor actual de$/ (el separador de registro de entrada) y$/ por defecto a una nueva línea ..

e todos modos, mis preguntas son:

¿Qué líneas nuevas se eliminan? ¿Perl agrega automáticamente una"\n" a la entrada de<STDIN>? Solo estoy un poco confuso porque cuando leo "en realidad elimina cualquier carácter que coincida con el valor actual de$/ ", No puedo evitar pensar" No recuerdo haber puesto un$/ en cualquier parte de mi código ".

Me gustaría desarrollar las mejores prácticas lo antes posible. ¿Es mejor incluir siemprechomp después<STDIN> ¿o hay escenarios en los que es innecesario?

Respuestas a la pregunta(5)

Su respuesta a la pregunta