В Perl есть особенные строки, очень похожие на литералы: это строки, заключенные в обратные апострофы (back-quotes, backticks) ``, для которых также есть эквивалентная запись в виде
$music_files = `dir *.mp3`; # или qx(dir \*.mp3)
Таким же образом можно легко воспользоваться услугами любой другой программы. Недаром Perl часто называют "склеивающим языком" (glue language): с помощью Perl-программы можно обращаться к имеющимся программам, получать результат их выполнения и обрабатывать его по усмотрению программиста. Так, упомянутый в
Встречается еще один тип строковых литералов, называемых V-строки ("V-strings" - строки версий), хотя он считается устаревшим и может не поддерживаться в будущем.
v1.20.300.4000 # то же, что "\x{1}\x{14}\x{12c}\x{fa0}"
v9786 # "смайлик" ? (символ Unicode \x{263A})
v79.107.33 # строка 'Ok!'
79.107.33 # в литерале с несколькими точками можно без "v"
V-строки полезны для сравнения "номеров" версий с помощью операций строкового сравнения, например:
$version = v5.8.7;
print "Версия подходит\n" if $version ge v5.8.0;
V-строки иногда также применяются для записи сетевых адресов IPv4, например: v127.0.0.1.
Кроме escape-последовательностей, описанных в
Таблица 7.1. Преобразующие escape-последовательности
Управляющая последовательность | Мнемоника символа | Преобразование |
---|---|---|
\u | Upper case | преобразовать следующий символ к верхнему регистру |
\l | Lower case | преобразовать следующий символ к нижнему регистру |
\U | Upper case | преобразовать символы до \E к верхнему регистру |
\L | Lower case | преобразовать символы до \E к нижнему регистру |
\Q | Quote | отменить специальное значение символов вплоть до \E |
\E | End | завершить действие \U или \L или \Q |
Применение этих преобразующих escape-последовательностей можно проиллюстрировать такими примерами:
use locale; # для правильной обработки кириллицы
$name = 'мария'; # будем преобразовывать значение переменной
print "\u$name"; # будет выведено: Мария
print "\U$name\E"; # будет выведено: МАРИЯ
print "\Q$name\E"; # будет выведено: \м\а\р\и\я
Аналогичного результата можно достигнуть при использовании некоторых строковых функций, о которых пойдет речь далее в этой лекции.
Еще одним видом непосредственной записи в программе текстовой информации являются так называемые встроенные документы (here-documents). Эта конструкция, заимствованная из командного языка Unix, представляет из себя встроенный в программу произвольный текст. Встроенный документ начинается символами <<, за которыми без пробелов указывается ограничитель, отмечающий конец документа. Все строки, начиная со следующей, рассматриваются как содержимое этого документа до тех пор, пока не встретится строка, состоящая только из указанного ограничителя. Обозначающий конец встроенного документа ограничитель должен записываться на отдельной строке с самого ее начала.
$here_document = <
Здесь располагается текст встроенного документа,
ограничитель которого записывается с начала