Оператор chomp

Когда вы впервые читаете описание оператора chomp, он кажется ужасно узкоспециализированным. Он работает с переменной. В переменной должна содержаться строка. Если эта строка завершается символом новой строки, chomp удаляет этот символ. Вот (почти) и все, что он делает. Пример:

$text = "a line of text\n"; # Или то же из
chomp($text); # Удаление символа новой строки

Но в действительности этот оператор настолько полезен, что вы будете использовать его почти в каждой написанной программе. Даже в таком виде это самый простой способ удаления завершающего символа новой строки из переменной. Однако существует еще одна, более удобная форма использования chomp: каждый раз при введении новой переменной в Perl можно использовать оператор присваивания. Perl сначала выполняет присваивание, а затем использует переменную так, как вы потребуете. Таким образом, самый распространенный сценарий использования chomp выглядит так:

chomp($text = ); # Прочитать текст без символа новой строки
$text = ; # То же самое...
chomp($text); # ...но в два этапа

На первый взгляд комбинированное использование chomp не кажется таким уж простым – скорее оно выглядит более сложным! Если представить себе происходящее как две операции (прочитать строку, а затем «откусить» от нее символ новой строки), запись в виде двух команд выглядит более естественной.


Но если воспринимать ее как одну операцию – прочитать только текст без символа новой строки – запись из одной команды становится более логичной. А поскольку большинство программистов Perl поступает именно так, лучше привыкайте сразу. В действительности chomp является функцией, а не оператором. Как функция chomp имеет возвращаемое значение – количество удаленных символов. Впрочем, вам это число вряд ли когда-нибудь понадобится:

$food = ;
$betty = chomp $food; # Получаем значение 1, но это и так известно!

Как вы вскоре увидите, вызов chomp может записываться как с круглыми скобками, так и без них. Это еще одно общее правило в Perl: круглые скобки всегда можно убрать – кроме тех случаев, когда это изменяет смысл выражения. Если строка завершается двумя или более символами новой строки, chomp удалит только один из них. Если символов новой строки нет, chomp не делает ничего и возвращает 0.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Автоматическое преобразование между числами и строками
Бинарные операторы присваивания
Вещественные литералы
Встроенные предупреждения Perl
Выбор имен переменных

Вернуться в раздел: Perl / 1. Скалярные данные