Clarification on chomp

Estou de folga das aulas agora e decidi gastar meu tempo aprendendo Perl. Estou trabalhando com Beginning Perl http: //www.perl.org/books/beginning-perl) e estou terminando os exercícios no final do capítulo trê

Um dos exercícios solicitou que eu "Armazene seus números de telefone importantes em um hash. Escreva um programa para procurar números pelo nome da pessoa"

e qualquer forma, eu tinha pensado nisso:

#!/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";

E simplesmente não funcionaria. Continuei recebendo esta mensagem de erro:

Uso de valor não inicializado na concatenação (.) Ou string na hello.plx linha 17, linha 1

Eu tentei brincar com o código um pouco mais, mas cada "solução" parecia mais complexa do que a "solução" que veio antes. Finalmente, decidi verificar as respostas.

A única diferença entre o meu código e a resposta foi a presença dechomp ($input); depois de<STDIN>;.

Agora, o autor usouchomp no exemplo anterior, mas ele realmente não cobriu o quechomp estava fazendo. Então, encontrei esta resposta em www.perlmeme.org

Ochomp() função @ removerá (geralmente) qualquer caractere de nova linha do final de uma string. O motivo que costumamos dizer é que ele remove realmente qualquer caractere que corresponda ao valor atual de$/ (o separador de registros de entrada) e$/ padrão para uma nova linha ..

e qualquer forma, minhas perguntas são:

Quais novas linhas estão sendo removidas? O Perl anexa automaticamente um"\n" para a entrada de<STDIN>? Eu sou um pouco claro, porque quando leio "ele remove realmente qualquer caractere que corresponda ao valor atual de$/ ", Não consigo deixar de pensar" não me lembro de colocar um$/ em qualquer lugar do meu código. "

Gostaria de desenvolver as melhores práticas o mais rápido possível - é melhor sempre incluirchomp depois de<STDIN> ou existem cenários onde é desnecessário?

questionAnswers(5)

yourAnswerToTheQuestion