Разъяснение по chomp

Я сейчас на перерыве в занятиях и решил потратить свое время на изучение Perl. Я работаю с Beginning Perl (http://www.perl.org/books/beginning-perl/) и заканчиваю упражнения в конце третьей главы.

В одном из упражнений меня попросили "Хранить ваши важные телефонные номера в гаше". Напишите программу для поиска номеров по имени человека"

В любом случае, я придумал это:

#!/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 = ;
print "$input can be reached at $name_number{$input}\n";

И это просто не сработает. Я продолжал получать сообщение об ошибке:

Использование неинициализированного значения в конкатеннации (...) или строки в hello.plx. строка 17, строка 1

Я попытался поиграть с кодом еще немного, но каждое "решение" выглядело более сложным, чем "решение", которое пришло до него. Наконец, я решил проверить ответы.

Единственной разницей между моим кодом и ответом было наличие chomp ($input); после ;.

В предыдущем примере автор использовал chomp, но на самом деле он не описал, что делал chomp. Итак, я нашел этот ответ на сайте www.perlmeme.org:

Функция chomp() удалит (обычно) любой символ новой строки из конец строки. Причина, по которой мы обычно говорим, заключается в том, что на самом деле удаляет любой символ, совпадающий с текущим значением $/ (ввод разделитель записей), и $/ по умолчанию переходит на новую строку...


В любом случае, мои вопросы:

  1. Какие новые линии удаляются? Автоматически ли Perl добавляет "\n" к входу из ? Я просто немного неясен, потому что когда я читаю "на самом деле удаляется любой символ, который соответствует текущему значению $/", я не могу не подумать: "Я не помню, чтобы ставил $/ где-то в моем коде". "

  2. Хотелось бы как можно быстрее разработать лучшие практики - лучше всегда включать chomp после или есть сценарии, в которых это не нужно?

7
задан Cœur 22 April 2018 в 03:19
поделиться