Операции заключения в кавычки Кавычки (одинарные, двойные и обратные)
в Perl мы используем для задания строковых литералов, причем получающиеся результирующие
строковые данные существенно зависят от используемого типа кавычек: символы
строки в одинарных кавычках трактуются так, как они в ней заданы, тогда как
некоторые символы ($, @) или даже последовательности символов (\ п
, \t) в строке в двойных кавычках выполняют определенные действия. Всё дело
в том, что в Perl кавычки — это всего лишь удобный синтаксический эквивалент
определенных операций, выполняемых над символами строки. В языке, кроме трех
перечисленных операций заключения в кавычки, определен еще ряд операций, выполняющих
определенные действия со строковыми данными и внешне похожих на операции заключения
в кавычки, на которые мы будем в дальнейшем ссылаться так же, как на операции
заключения в кавычки. Все операции заключения в
кавычки представлены в табл. 4.3 с эквивалентным синтаксисом (если таковой
существует) и кратким описанием действий, выполняемых при их выполнении.
При использовании общей формы
операции заключения в кавычки вместо фигурных скобок {}, представленных в табл.
4.3, можно использовать любую пару символов, выбранную в качестве разделителя.
Если выбранный символ не является какой-либо скобкой (круглой, угловой, квадратной
или фигурной), то он ставится в начале и в конце строки, к которой должна быть
применена соответствующая операция, тогда как в случае использования скобок-разделителей
сначала используется открывающая скобка, а в конце закрывающая. Между знаком
операции и строками в символах-разделителях может быть произвольное число пробельных
символов. Обычно в качестве разделителя программистами Perl используется косая
строка "/", хотя это и не обязательно. Эта операция аналогична заданию
строкового литерала в одинарных кавычках. В нем каждый символ строки представляет
самого себя, подстановка значений переменных не выполняется. Единственное исключение
— обратная косая черта, за которой следует символ-разделитель или еще одна обратная
косая черта. Эти последовательности символов позволяют ввести непосредственно
в строку символ разделителя или обратную косую черту (хотя обратная косая черта
и так представляет саму себя). Несколько примеров:
q-сДескриптор \<FILE\»; # Строка символов: Дескриптор <FILE>
'Каталог \\bin\usr\n'; # Эквивалентно
предыдущей операции Эта операция аналогична заданию строкового литерала в двойных кавычках. При
ее выполнении осуществляется подстановка в строку значений скалярных переменных,
начинающихся с символа $, и переменных массивов скаляров, начинающихся с символа
@, а также осуществляется интерпретация управляющих последовательностей.
После выполнения указанных действий будут сформированы строковые данные.
Для задания в строке символа разделителя, используемого в этой операции, можно
воспользоваться обратной косой чертой перед этим символом. Несколько примеров:
qq(print\(\) - функция вывода);
# Строка символов: Эта операция аналогична заданию строкового литерала в обратных кавычках. При ее вычислении сначала осуществляется подстановка значений скалярных переменных и переменных массивов скаляров (если таковые присутствуют) в строку, заданную между разделителями операции, а затем полученная строка, как некая команда, передается на выполнение командному интерпретатору операционной системы и результат ее выполнения подставляется в формируемое операцией qx{} окончательное строковое значение. Таким способом можно ввести в программу Perl результаты выполнения определенных команд или пользовательских программ. Несколько примеров: $file = "file.tmp";
$rez = qx(progl -a); # Переменная $rez содержит результаты вывода
$rez = 'progl -a~; # Эквивалентно
предыдущей операции Эта операция возвращает список слов,
выделенных из строки, заданной между разделителями операции. Разделителями между
словами считаются пробельные символы: @m = qw( one two ); I Эквивалентно:
$m[0] = 'one'; $m[l] = 'two'; Действие операции qw{СТРОКА} эквивалентно действию
встроенной функции Наиболее часто встречающаяся ошибка
при использовании этой операции — отделить слова запятыми. При включенном режиме
отображения предупреждений -w будет сгенерировано сообщение о том, что, возможно,
запятая используется для разделения слов, а не входит в состав слова. В Perl реализована еще одна интересная
возможность "ввода" строковых данных в программу, которая основана
на синтаксисе "документ здесь" командного интерпретатора
shell системы UNIX. Она позволяет определить в программе строковые данные большого
объема, расположенные в нескольких последовательных строках текста программы,
и использовать их в качестве операндов разных операций: присваивания, печати
и т. п. Ее синтаксис прост: после знака
операции « задается завершающий идентификатор, который служит признаком
окончания задания строковых данных. Это означает, что все строки данных, расположенные
между текущей строкой, содержащей операцию "документ здесь" и строкой,
содержащей завершающий идентификатор, рассматриваются как единый фрагмент строковых
данных: line 1 m print << "m"
; Если завершающий идентификатор
в операции « задан без кавычек, то он должен следовать за знаком операции
без каких-либо пробелов. Если такое случается, то Perl интерпретирует эту операцию
с завершающим идентификатором пустая строка "" и ищет в тексте программы
первую пустую строку, ограничивающую строковые данные этой операции: Поделитесь этой записью или добавьте в закладки | Полезные публикации |