Поиск

Литералы

Perl содержит два различных типа скалярных констант, называемых литералами: числовые и строковые литералы.

Числовые литералы

Числовые литералы — это обычные числа. Perl "понимает" числа, представленные в различных форматах. Все примеры, приведенные в табл. 2.1, являются допустимыми числовыми литералами Perl.

Я думаю, здесь нет смысла описывать, что такое числа, поскольку это вам должно быть известно, из курса средней школы. Остановимся только на нюансах. Целые числа представляются набором нескольких цифр. В вещественных числах используется десятичная точка. Числа с плавающей точкой содержат мантиссу, букву е и порядок числа. В больших числах для удобства чтения можно использовать символ подчеркивания, разделяющий тысячи. Перед тем как использовать такие числа, Perl удаляет символы подчеркивания.

Не ставьте перед числами нули, как, например, в 010. В Perl так обозначаются числа в восьмеричной системе счисления. В Perl также можно использовать числа в шестиадцатеричной и двоичной системах счисления. Подробней обо всем этом можно узнать, обратившись к разделу документации perldata.
Строковые литералы

Строковые литералы в Perl — это обычные строки символов. Они могут содержать любое количество данных. Размеры строк ограничены лишь размерами виртуальной памяти вашего компьютера. Строки могут содержать данные различных типов — текст ASCII со стандартным набором символов, текст ASCII с полным набором символов и даже двоичные данные. Строки могут быть также пустыми.

В Perl, за небольшими исключениями, вы обязаны заключать строковые литералы в кавычки. Этот процесс называется квотингом (quoting) строки. Для этого можно использовать или одинарные (' '), или двойные кавычки (".")- Ниже приведено несколько примеров строковых литералов:

"Привет!"
'Дело было в прошлой веке'
"Одна рыбагnВторая рыба,nКрасная ры6а,nКуча раковn"
"Мой дорогой Мишель, постарайся все сделать быстро.n"

Если внутри двойных кавычек нужно поместить символ кавычки, перед ним необходимо поставить символ обратной косой черты. Этот символ, используемый внутри строкового литерала, говорит Perl, что идущий за ним символ не должен восприниматься как управляющий. Посмотрите на следующую строку, которую Perl поймет неправильно:

тогда я сказал еку: "Иди и принеси мне это.""

В ней кавычка перед словом Иди соответствует первой кавычке строки, поэтому фраза Иди и принеси мне это. остается за кавычками — так в Perl писать нельзя. Для предупреждения подобной ситуации поставьте перед кавычками, которые Perl должен проигнорировать, символ обратной косой черты, как показано ниже:

"И тогда я сказал ему: "Иди и принеси мне это.""

Символы обратной косой черты указывают Perl, что следующий за ним символ кавычки не закрывает строку, а является обычным текстовым символом. Это же правило может быть применено и к одинарным кавычкам, например:

'Перед одинарной кавычкой V поставьте обратную косую черту.'

Основное отличие между одинарными и двойными кавычками заключается в том, что строка в одинарных кавычках является литералом в чистом виде. Поэтому ее содержимое никак не интерпретируется Perl. В строках, заключенных в двойные кавычки, могут находиться имена переменных и последовательности управляющих символов. Эти последовательности имеют специальное обозначение, что позволяет включать в строки такие символы, которые сложно или невозможной набрать с клавиатуры или ввести каким-либо другим способом. В табл. 2.2 приведен краткий список управляющих последовательностей Perl.

Полный список управляющих последовательностей можно найти в справочной документации. На предыдущем занятии я уже рассказывал, как обратиться к документации по Perl с помощью встроенной утилиты perldoc. Управляющие последовательности описаны в руководстве под рубрикой perlop в разделе Quote and Quote-like Operators.

При наборе строки с большим количеством кавычек очень легко допустить ошибку, поскольку перед каждой внутренней кавычкой нужно обязательно поставить обратную косую черту, как показано ниже:

"И тогда я сказал: "Иди вперед", а он ответил: "Слушаюсь!в."

Поэтому для облегчения процесса квотинга в Perl предусмотрены специальные операторы qq и q. Оператор qq заменяет двойные кавычки и ведет себя почти во всех случаях точно так же, как пара двойных кавычек:

qq(H тогда я сказал: "Иди вперед", а он ответил: "Слушаюсь!".)

Одинарные кавычки могут быть заменены оператором q: q('Литералы' нужно заключить в одинарные кавычки)

Для обозначения начала и конца строк в операторах qq и q можно использовать любые символы, кроме алфавитно-цифровых. Эти символы называются ограничителями (delimiters). В предыдущих примерах я воспользовался скобками, но, как я уже говорил, допустимы любые символы, кроме алфавитно-цифровых:

q/'Литералы' нужно заключить в одинарные кавычки/ q,'Литералы' нужно заключить в одинарные кавычки,

Символы, которые вы хотите использовать в качестве ограничителей, следует указать сразу после операторов qq или q. Вы можете использовать парные символы — (h°) Oi (] состроками, содержащими эти символы. Причем, если они идут парами внутри операторов qq и q, обратная косая черта не используется:

Я(Джо (отец Тона) рубил все деревья подряд (кроне самых больших).);

Использование вложенных скобок или других символов может снизить читабельность программы. Поэтому обычно используют ограничители, символы которых не встречаются в строке:

q(Джo (отец Тока) рубил все деревья подряд (кроне самых больших).);