Я сейчас на перерыве в занятиях и решил потратить свое время на изучение 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()
удалит (обычно) любой символ новой строки из конец строки. Причина, по которой мы обычно говорим, заключается в том, что на самом деле удаляет любой символ, совпадающий с текущим значением$/
(ввод разделитель записей), и$/
по умолчанию переходит на новую строку...
В любом случае, мои вопросы:
Какие новые линии удаляются? Автоматически ли Perl добавляет "\n"
к входу из
? Я просто немного неясен, потому что когда я читаю "на самом деле удаляется любой символ, который соответствует текущему значению $/
", я не могу не подумать: "Я не помню, чтобы ставил $/
где-то в моем коде". "
Хотелось бы как можно быстрее разработать лучшие практики - лучше всегда включать chomp
после
или есть сценарии, в которых это не нужно?