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


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


# Все сразу

($var = <<HERE_TARGET)  ="  s/~\s+//gm; далее следует


48 Глава 1 • Строки

ваш текст HERE_TARGET

# Или за два этапа $var = «HERE_TARGET;

далее следует

ваш текст HERE_TARGET $var =~ s/"\s+//gm;

Комментарий

Подстановка получается весьма прямолинейной. Она удаляет начальные пропус­ки из текста встроенного документа. Модификатор /гп позволяет символу " со­впадать с началом каждой строки документа, а модификатор /д заставляет меха­низм поиска повторять подстановку с максимальной частотой (то есть для каждой строки встроенного документа).

(Sdefimtion = «'FINIS') ="s/~\s+//gm,

The five variations of caraelids

are the familiar camel,   his frieds

the llama and the alpaca,  and the

rather less well-known guanaco

and vicuca. FINIS

Учтите: во всех шаблонах этого рецепта используется модификатор \s, разре­шающий совпадение с символами перевода строки. В результате из встроенного документа будут удалены все пустые строки. Если вы не хотите этого, замените в шаблонах \s на [~\S\n].

В подстановке используется то обстоятельство, что результат присваивания может использоваться в левой стороне =~. Появляется возможность сделать все в одной строке, но она работает лишь при присвоении переменной. При непосред­ственном использовании встроенный документ интерпретируется как неизменя­емый объект, и вы не сможете модифицировать его. Более того, содержимое встроенного документа нельзя изменить без предварительного сохранения его в переменной.

Впрочем, для беспокойства нет причин. Существует простой обходной путь, особенно полезный при частом выполнении этой операции. Достаточно написать подпрограмму:

sub fix {

my Sstring = shift; $strmg =~ s/~\s+//gm; return Sstring;

print fix(«"END");

Наш документ END


1.11. Отступы во встроенных документах   49

# Если функция была объявлена заранее,   скобки можно опустить: print fix « 'END";

Наш документ END

Как и во всех встроенных документах, маркер конца документа (END в нашем примере) должен быть выровнен по левому полю. Если вы хотите снабдить отсту­пом и его, в документ придется добавить соответствующее количество пропусков:




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



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