Списковые операции. Операции заключения в кавычки.
Операция q{}
Эта операция аналогична заданию строкового литерала в одинарных кавычках. В нем каждый символ строки представляет самого себя, подстановка значений переменных не выполняется. Единственное исключение – обратная косая черта, за которой следует символ-разделитель или еще одна обратная косая черта. Эти последовательности символов позволяют ввести непосредственно в строку символ разделителя или обратную косую черту (хотя обратная косая черта и так представляет саму себя). Несколько примеров:
q-сДескриптор \<FILE\"; # Строка символов: Дескриптор <FILE> д!Каталог \\bin\usr\n!; # Строка символов; Каталог \bin\usr\n 'Каталог \\bin\usr\n'; # Эквивалентно предыдущей операции
Операция qq{}
Эта операция аналогична заданию строкового литерала в двойных кавычках. При ее выполнении осуществляется подстановка в строку значений скалярных переменных, начинающихся с символа $, и переменных массивов скаляров, начинающихся с символа @, а также осуществляется интерпретация управляющих последовательностей. После выполнения указанных действий будут сформированы строковые данные. Для задания в строке символа разделителя, используемого в этой операции, можно воспользоваться обратной косой чертой перед этим символом. Несколько примеров:
qq(print\(\) – функция вывода); # Строка символов: # print() – функция вывода $т = 123; qq/4enoe\t$m\n/; # Строка символов: # Целое 123 "Ifenoe\t$m\n"; # Эквивалентно предыдущей операции
Операция qx{}
Эта операция аналогична заданию строкового литерала в обратных кавычках. При ее вычислении сначала осуществляется подстановка значений скалярных переменных и переменных массивов скаляров (если таковые присутствуют) в строку, заданную между разделителями операции, а затем полученная строка, как некая команда, передается на выполнение командному интерпретатору операционной системы и результат ее выполнения подставляется в формируемое операцией qx{} окончательное строковое значение. Таким способом можно ввести в программу Perl результаты выполнения определенных команд или пользовательских программ. Несколько примеров:
$file = "file.tmp"; qxfdel $file); # Удаление файла с именем file.tmp $rez = qx(progl – a); # Переменная $rez содержит результаты вывода # на экран программы progl $rez = 'progl – a~; # Эквивалентно предыдущей операции
Операция qw{}
Эта операция возвращает список слов, выделенных из строки, заданной между разделителями операции. Разделителями между словами считаются пробельные символы:
@m = qw(one two); I Эквивалентно: $m[0] = 'one'; $m[l] = 'two';
Действие операции qw{СТРОКА} эквивалентно действию встроенной функции:
split С ', qfCTPOKA});
(Описание функции split см. в части 10.)
Наиболее часто встречающаяся ошибка при использовании этой операции – отделить слова запятыми. При включенном режиме отображения предупреждений – w будет сгенерировано сообщение о том, что, возможно, запятая используется для разделения слов, а не входит в состав слова.