PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 63


Описание оператора s/// в perlre(l) и perlop(l); описание функции quotemeta рассматривается вperlfunc(l). В рецепте 19.1 рассматривается преобразова­ние служебных символов в HTML, а в рецепте 19.6 — о том, как обойтись без передачи интерпретатору строк со служебными символами.

1.14. Удаление пропусков в обоих концах строки

Проблема

В полученную строку могут входить начальные или конечные пропуски. Требу­ется удалить их.

Решение

Воспользуйтесь парой подстановок:


1.15. Анализ данных, разделенных запятыми    55

$stnng =~ s/"\s+//; Sstring =" s/\s+$//;

Также можно написать специальную функцию, которая возвращает нужное зна­чение:

$stnng = trim( $stnng); @many  = trim(@many);

sub trim {

my @out = @_, for (@out) {

s/-\s+//;

s/\s+$//; } return wantarray ' @out  $out[0];

Комментарий

У этой проблемы имеются различные решения, однако в большинстве случаев приведенный вариант является наиболее эффективным.

Для удаления последнего символа из строки воспользуйтесь функцией chop. В версии 5 была добавлена функция chomp, которая удаляет последний символ в том и только в том случае, если он содержится в переменной $/ (по умолчанию — "\п"). Чаще всего она применяется для удаления завершающего символа перево­да строки из введенного текста:

# Вывести полученный текст заключенным в >< while(<STDIN>)   {

chomp;

print ">$_<\n",

> Смотри также---------------------------------------------------------------------------------------------

Описание оператора s/// врег1ге(1) иperlop(l); описание функций chop и chomp вperlfunc(i). Начальные пропуски удаляются в функции getnum из рецепта 2.1 и при разделении элементов списка в рецепте 4.1.

1.15. Анализ данных, разделенных запятыми

Проблема

Имеется файл данных, поля которого разделены запятыми. Однако в полях могут присутствовать свои запятые (находящиеся внутри строк или снабженные слу­жебными префиксами). Многие электронные таблицы и программы для работы с




Начало  Назад  Вперед



Книжный магазин