Для чайников perl: Учебник Perl по-русски
Учебник Perl по-русски
Учебник Perl Maven научит вас основам программирования на Perl. Вы сможете писать простые скрипты,
анализировать лог-файлы, считывать и записывать CSV-файлы. Это лишь некоторые типичные задачи, которые
вы освоите.
Вы научитесь использовать CPAN и некоторые конкретные модули CPAN.
Так вы заложите хорошую основу знаний, которые позже сможете развивать.
Бесплатная онлайн-версия учебника создается сейчас. Многие части уже готовы. Новые материалы
публикуются и переводятся каждые несколько дней. Последний перевод был опубликован 10 июля 2013 г.
Если вы хотите получать уведомления, когда публикуются новые материалы, пожалуйста
подпишитесь на рассылку.
Также можно купить версию англоязычных материалов в виде
электронной книги. Вдобавок к бесплатным статьям, в этой
версии есть другие материалы из соответствующих курсов, содержащие множество упражнений и решений.
Еще есть видео-курс, состоящий из более 210 скринкастов
общей продолжительностью более 5 часов. В дополнение к представлению материала, он также включает
объяснения решений всех упражнений, а также исходный код всех примеров и упражнений.
Бесплатный онлайн Учебник для новичков — Perl Maven Tutorial
С помощью этого учебника вы научитесь использовать язык программирования Perl 5 так, чтобы
выполнить свою задачу.
Вы узнаете как об основных свойствах языка, так и о расширениях (библиотеках), или, как их называют
Perl-программисты, модулях. Мы рассмотрим как стандартные модули, входящие в установочный
пакет Perl, так и модули сторонних разработчиков, размещаемые на CPAN.
Мы постараемся по возможности обучать решениям, ориентированным на конкретные задачи. Мы будем
придумывать жизненные задачи и учиться использовать инструменты, необходимые для их решения.
Также, когда возможно, мы постараемся показывать вам некоторые упражнения, на которых можно
потренироваться применять выученные уроки.
Введение
-
Установка Perl. Hello World. «Ремни безопасности» (use strict, use warnings) -
Редакторы, IDE, среды разработки для Perl -
Perl в командной строке -
Основная документация Perl и документация на модули CPAN -
POD — Простая Старая Документация -
Отладка Perl-скриптов
Скалярные переменные
- Типичные предупреждения и сообщения об ошибках
-
Автоматический перевод строк в числа - Условные выражения: if
-
Булевы (true и false) значения в Perl - Числовые и строковые операторы
-
undef, начальное значение и функция «defined» -
Строки в Perl: кавычки, интерполяция и экранирование -
Here-документы -
Скалярные переменные -
Сравнение скаляров -
Строковые функции: length, lc, uc, index, substr -
Игра в «угадай число» (rand, int) -
Цикл while в Perl -
Область видимости переменных в Perl
Файлы
-
Выход (exit) -
Стандартный канал вывода, стандартный канал ошибок и перенаправление в командной строке - warn и die
-
Запись в файл -
Дописывание в файл -
Открытие и чтение из файла на Perl -
Не открывайте файлы по-старому -
Двоичный режим, работа с Юникодом -
Чтение из двоичного файла, read, eof - tell, seek
- truncate
Списки и массивы
- цикл foreach в Perl
-
Цикл for в Perl - Списки в Perl
- Использование модулей
-
Массивы в Perl - Обработка параметров командной строки @ARGV, Getopt::Long
-
Как прочесть и обработать CSV-файл? (split, Text::CSV_XS)
(How to read and process a CSV file? (split, Text::CSV_XS)) -
join
(join) -
Год 19100 (time, localtime, gmtime) и введение контекста
(The year of 19100 (time, localtime, gmtime) and introducing context) -
Чувствительность к контексту Perl
(Context sensitivity in Perl) -
Сортировка массивов в Perl
(Sorting arrays in Perl) -
Уникальные значения в массиве в Perl
(Unique values in an array in Perl) -
Управление массивами в Perl: shift, unshift, push, pop
(Manipulating Perl arrays: shift, unshift, push, pop) -
Стек и очередь
(Stack and queue) - reverse
- троичный оператор
- Управление циклами: next и last
- min, max, sum с помощью List::Util
Подпрограммы
-
Подпрограммы и функции в Perl
(Subroutines and Functions in Perl) - Передача и получение параметров в подпрограммах
- Переменное количество параметров
- Возвращение списка
- Рекурсивные подпрограммы
Хэши, массивы
-
Хэши в Perl (словарь, ассоциативный массив, справочная таблица)
(Perl Hashes (dictionary, associative array, look-up table)) - exists, delete для элементов хэша
Регулярные выражения
- Регулярные выражения в Perl
- Regex: Классы символов
- Regex: Кванторы
- Regex: «Жадное» и «нежадное» сравнение
- Regex: Группировка и захватывание
- Regex: Якоря
- Настройки и модификаторы регулярных выражений
- Подстановка (поиск и замена)
-
trim — убираем пробелы в начале и в конце
(trim — remove leading and trailing spaces)
Perl и функции командной строки
- -X операторы в Perl
- Перенаправление потоков в Perl
-
Запуск внешних программ с помощью system - Unix-команды: rm, mv, chmod, chown, cd, mkdir, rmdir, ln, ls, cp
-
Как удалить, скопировать или переименовать файл с помощью Perl
(How to remove, copy or rename a file with Perl) - Команды Windows/DOS: del, ren, dir
- Файловые подстановки (Wildcard’ы)
- Указатели на директории
- Обход дерева директории (find)
CPAN
-
Скачивание и установка Perl (Strawberry Perl или ручная сборка)
(Download and install Perl (Strawberry Perl or manual compilation)) - Скачивание и установка Perl с помощью Perlbrew
- Поиск и оценка модулей CPAN
- Скачивание и установка Perl-модулей со CPAN’а
-
Как поменять @INC, чтобы находить Perl-модули в нестандартных местах?
(How to change @INC to find Perl modules in non-standard locations?) - Как поменять @INC на относительный адрес
- local::lib
Немного примеров использования Perl
-
Как заменить строку файла с помощью Perl? (slurp)
(How to replace a string in a file with Perl? (slurp)) - Чтение из Excel-файлов с помощью Perl
-
Creating Excel files using Perl (Платная подписка (только по-английски)) - Отправка электронной почты с помощью Perl
- CGI-скрипты на Perl
- Web-приложения с помощью Perl: PSGI
- Разбор XML-файлов
- Чтение и запись JSON-файлов
-
Работа с базами данных на Perl (DBI, DBD::SQLite, MySQL, PostgreSQL, ODBC)
(Database access using Perl (DBI, DBD::SQLite, MySQL, PostgreSQL, ODBC)) - Работа с LDAP на Perl
Другое
-
Splice — режем массивы вдоль и поперек
(Splice to slice and dice arrays in Perl) -
Как создать Perl-модуль для повторного использования кода
(How to create a Perl Module for code reuse) -
Объектно-ориентированный Perl с помощью Mooses
(Object Oriented Perl using Mooses) -
Типы свойств в классах Perl при использовании Moose
(Attribute types in Perl classes when using Moose) -
Многомерные массивы
(Multi dimensional arrays)
Объектно-ориентированный Perl с помощью Moo
-
ООП с помощью Moo — скринкаст и текстовое объяснение основных принципов Moo,
создание класса с единственным свойством, которое может быть либо «только для чтения» (неизменяемое),
либо «для чтения и записи» (изменяемое). Создание экземпляра (объекта).
OOP with Moo a screencast and text explaining the basics of Moo,
creating a class with a single attrubue that can be either read-only (immutable) or read-write (mutable) attribute.
Creating and instance (object). - Платная подписка (только по-английски):
- Type checking with Moo. While Moo does not have a type-system it allows you to set-up type checking in the setters of the attributes.
- required attributes
- Moo attributes with default values
- Moo attribute predicate and clearer
For the original, visit the Perl Tutorial in English
Perl. Самоучитель от самоученика. Введение / Песочница / Хабр
Зачин:
Совсем недавно поставил себе цель — выучить язык программирования и пойти работать программистом. Выбрал Perl, почему? Потому что первое, что попалось на глаза — не слишком правильный подход к делу, это я понял когда изучил 2/5 учебника. Но деваться уже некуда, не бросать же всё не закончив? Да и Perl неплохой вариант для меня.
Только пока смутно представляю где я буду его использовать в практических для себя целях. Ну да ладно. Знания Perl не помешают, мне сообщили что Google использует Perl, это меня вдохновило ещё больше.
Скажу сразу — программировал я последний раз лет 15 назад в Basic. Добился каких-то высот, потом пошел по накатанной и увлекся экономической теорией. Поэтому обучение программированию занимаюсь с «нуля».
«Perl. Самоучитель от самоученика» — это серия обзорных статей, которые помогут мне (передавая и публикуя знания по Perl, я тем самым укрепляю эти знания в своей голове) и помогут людям, которые только изучают Perl.
Форма подачи — язык нуба доступный для другого нуба.
Самоучитель:
Что выбрать для самоучения Perl? Я лично выбрал 3 источника:
- Язык программирования Perl» (Интуит.ру),
- Рэндал Л. Шварц, Брайан Д. Фой и Том Феникс — Perl. Изучаем глубже
- А.Н. Швец. Perl. Примеры программ» (С сайта Мех.-мата МГУ)
Позднее добавил задачники по программированию(когда не хватило заданий Интуита):
- А. Шень. Программирование. Теоремы и задачи.
- М.С. Долинский. Решение сложных и олимпиадных задач по программированию
- Д.М. Златопольский — Сборник задач по программированию
Какой основной информацией нужно обладать при изучении Perl:
- Числа (десятичные целые, десятичные дробные, числа в экспоненциальной форме, шестнадцатеричные числа, восьмеричные числа, двоичные числа) + удобная форма записи для разделения разрядов больших чисел.
- Строки (слова, символы, цифры и т.д.) — записываются внутри двойных кавычек или апострофов
- Переменные — во время выполнения программы переменные хранят данные(строки, числа), переменные которые хранят единичные скалярные данные(строки, числа) начинаются со знака $, переменные которые хранят множество скалярных данных называются массивами, начинаются со знака @.
- Escape-последовательность — начинается со знака «\», после которого идут символы. Нужны для специфических действий или чтобы поставить спец.символ
- Интерполяция — заключенная в двойные кавычки escape-последовательность изменяется на соответсвующее действие или спец.символ
- Интерполяция переменных — переменная как и escape-последовательность заключенная в кавычки изменяются на значение, которое хранится в этой переменной.
- Арифметические операции(Бинарные операции — операции над двумя объектами) — плюс, минус, деление, умножение, возведение в степень, деление по модулю
- Унарные операции (операция над одним объектом) — автоинкремент, автодекремент, унарный минус, унарный плюс
- Именованные унарные операции — операция вызова функции.
- Истина и ложь — проверка на истинность или ложность
- Операции сравнения — равно, не равно, меньше чем, больше чем, меньше или равно, больше или равно, числовое сравнение
- Логические операции — логическое НЕ, логическое И, логическое ИЛИ
- Побитовые операции — выполняются над двоичными разрядами. Расскажу в другом топике, который будет этого касаться.
- Операции сдвига — сдвигают значение двоичного разряда влево или вправо.
- Строковые операции — сцепление(конкатенация), повторение(репликация)
- Операции присваивания(бинарная операция) — левому значению присваивается значение правого.
- Операция вычисления последовательности выражений — в каком порядке происходит вычисление. Вычисляет сначала свой левый, а затем правый операнд
- Операция выбора (тернарная операция) — в вычислении участвует 3 операнда(аргумента\объекта). Если первый истинный, то результатом будет значение второго, или третьего.
- Операция чтения строки — ввести с клавиатуры нужное значение через командную строку\консоль
Далее я планирую рассказать о каждом пункте отдельно и расширенно.
По мере развития(или откликов) буду редактировать статью. Приглашаю к обсуждению.
За полгода планирую набить руку и голову в Perl. Чтобы создавать сложные программы, на сколько возможно это в Perl.
Потом приступить к изучению Java.
Единственный вопрос, который меня тревожит на данном этапе: где можно получить реальную практику по Perl?
Основы Perl — строки, числа, массивы, хэши
Так сложилось, что я знаю как минимум двух человек, которые хотели бы выучить Perl. Специально для них я решил написать этот пост.
Оглавление:
В нем вы найдете примеры простых программ из серии «вывести числа от 1 до 5» и тому подобное. Мне всегда нравилось учиться на примерах — это интереснее и быстрее, чем по книжкам или на семинарах. Также можете посмотреть посты этого блога, имеющие метку «Perl» — велика вероятность, что в них вы найдете еще примеры.
Я предполагаю, что в школе/институте вы изучали Pascal/Delphi, C или хотя бы Basic, и объяснять, что такое функция и циклы не требуется. Если это не так — ничего страшного, просто для того, чтобы во всем разобраться, вам придется потратить лишнее время на чтение Википедии. Если вы не знаете, как запустить bash-скрипт, или для чего в первой строке скрипта писать что-то вроде #!/bin/sh, придется немного погуглить, чтобы это выяснить.
Специально для тех, кого интересуют вопросы, «а правда ли, что Perl очень сложен», «а какие книжки по Perl можете посоветовать» и даже «эээ… а что, на нем еще пишут?», я написал Mini-FAQ по Perl, которое вы можете прочитать на HabraHabr. А для тех, кто неасилил многабукв здесь я приведу краткое его содержание:
- Perl — современный язык программирования, на котором пишут и будут писать еще очень долго.
- Perl, как и любой другой язык программирования, имеет свои достоинства, недостатки и области применения. Существует действительно большой класс задач, которые Perl решает на 5+.
- Синтаксис Perl не сложнее синтаксиса C++ или Java. В этом вы сможете убедиться, дочитав данный пост до конца.
- Существуют хорошие и при этом недорогие учебники по Perl. Также в сети вы без труда найдете сообщество perl-программистов, говорящих на вашем родном языке.
- Perl хорошо работает как под операционными системами семейства UNIX, так и под
ЗломWindows.
Дополнение: Также я рекомендую вам ознакомиться со статьями Perl vs Python vs Ruby vs PHP и Жрецы программирования. Первая повествует о производительности различных скриптовых языков, вторая — об отличии PHP от других ЯП. Фанатам Пайтона советую прочитать заметку Тест производительности скриптов на Python. Надеюсь, что эти материалы помогут вам найти ответ на вопрос «чем хорош Perl».
Привет, %username%!
Итак, давайте уже напишем наш первый скрипт на Perl!
#!/usr/bin/perl
$name = shift();
print(«Hello, $name!\n»);
Запускаем скрипт:
$ chmod u+x 1.pl
$ ./1.pl afiskon
Hello, afiskon!
Тут все очень просто:
- Имена скалярных переменных (то есть не массивов и не хэшей, что это такое — см ниже) начинаются со знака доллара.
- Функция shift возвращает очередной аргумент скрипта. Другими словами первый вызов shift() возвращает первый аргумент, второй вызов — второй аргумент и так далее.
- Функция print() выводит строку, переданную в качестве аргумента.
- В строку можно подставлять значения переменных (см строку 4). Подробнее о строках — см далее.
Если пока не очень понятно — ничего страшного. Возможно, немного теории внесет чуть больше ясности.
Типы переменных
В Perl существует три основных типа переменных: скаляры (числа и строки), массивы — подобно тем, что используются в Pascal или C (иногда массивы еще называют векторами), и хэши (ассоциативные массивы).
Скаляры мы уже использовали в предыдущем примере. Вот еще несколько примеров задания скаляров.
#!/usr/bin/perl
$a = 123;
$b = -7.496;
$c = 0xABC; # равно 2748, да, это комментарий 🙂
$d = ($a + $b) / $c;
$d *= $a; # тоже самое, что $d = $d * $a;
$str1 = «hello»;
$str2 = «$str1, world»; # в $str2 записано ‘hello, world’
$str3 = $a.»\n».$str2;
$str4 = ‘$str1’; # в $str4 записано ‘$str1’, а не ‘hello’
Тут мы задаем положительные и отрицательные, целые и дробные числа, задаем число в шестнадцатеричной кодировке, складываем, умножаем и делим — все как в Си или Java. Кроме перечисленных операций Perl также поддерживает операцию возведения в степень:
$a = 2 ** 8; # результат: 256
Со строками все примерно так же, как в каком-нибудь PHP. Точка означает операцию конкатенации (то есть «склеивания» строк), если в строке содержатся имена переменных, на их место подставляются значения, с помощью обратного слэша можно вставлять символы новой строки (\n), табуляции (\t), кавычки (\»), сам обратный слэш (\\) знак доллара безо всякой подстановки переменных (\$) и многое другое. Если строка в одинарных кавычках, символы в ней трактуются «как есть», без подстановки переменных и тд.
Как и PHP, Perl интерпретирует скаляры, как числа или как строки в зависимости от операции. Все просто:
$int1 = «11» + 22;
# ^ строка «11» преобразуется в число,
# после чего выполняется сложение, результат: 33.
$str1 = «11» . 22;
# ^ число 22 преобразуется в строку,
# после чего выполняется конкатенация, результат: «1122».
Правила преобразования из строки в число и наоборот тут те же, что и в PHP:
$str1 = 0 . «abc»;
# ^ результат — «abc», число ноль преобразуется в пустую строку
$int1 = «aaa» + 1;
# ^ результат — 1, в строке «aaa» нет цифр
$int2 = «12aaa» + 1;
# ^ результат — 13, учитываются только первые цифры строки
Кстати, для объявления длинных строк существуют специальные операторы — q и qq:
# аналогично одинарным кавычкам
$text = q {
Do you have $15 ?
};
# аналогично двойным кавычкам
$message = qq {
Hello, $username!
How are you?
};
Работа с массивами происходит следующим образом:
#!/usr/bin/perl
$scalar = «bebebebe»;
($a, $b) = (1, 2); # тоже самое, что $a = 1; $b = 2;
@arr = («aaa», 123, $scalar, $a+$b);
print $arr[1].»\n»;
push @arr, $a;
print pop(@arr).»\n»;
Здесь мы создаем массив @arr, состоящий из 4-х элементов (строка 5). Затем выводим второй элемент (строка 6). Нумерация элементов начинается с нуля, поэтому для вывода второго по счету элемента используется индекс 1. Затем кладем в конец массива значение переменной $a (функция push, строка 7), и тут же извлекаем и выводим его (функция pop, строка 8).
Обратите внимание, имена массивов начинаются с «собаки», а не доллара (запомнить не сложно — соответствующие символы похожи на первые буквы английских названий типов: $ — scalar, @ — array). При обращении ко второму элементу массива (строка 6) использовался знак доллара, потому что элемент массива является скаляром. По началу это вызывает много путаницы, но вообще все логично.
Еще в этом скрипте мы вызываем функции print и push без скобок. В Perl при вызове функции, везде, где это не вызывает неопределенности, скобки можно опустить.
Для объявления массива, элементами которого являются строки без пробелов, существует специальный оператор — qw:
@arr = qw/aaa bbb ccc/;
# аналогично («aaa», «bbb», «ccc»), только короче
Хэши похожи на массивы, но элементы в хэше не упорядочены. При этом в качестве ключа, по которому производится доступ к элементу, могут использоваться строки.
#!/usr/bin/perl
%hash = ( # при объявлении хэшей и массивов можно
«x» => 12, # использовать перенос строк
y => 53, # если в ключе нет спец-символов, кавычки не нужны
«z» => -10.5, # запятую на конце можно оставлять
);
$hash{«x»}++; # координата по x теперь равна 13
$hash{y}—; # координата по y теперь равна 52
# выводим координаты
print «x = $hash{x}, y = $hash{y}, z = $hash{z}\n»;
Имена хэшей начинаются со знака процента, для обращения к элементу используются фигурные скобки (а не квадратные, как в случае с массивами). Если имя ключа заранее известно, можно указывать его без кавычек (строка 10).
Кстати, переменные $test, @test и %test — это совершенно независимые друг от друга переменные разного типа.
В этом месте я хотел перейти к условным операторам и циклам for/while, но понял, что для одного поста текста и так уже многовато. Между тем за кадром остались многие вопросы:
- Условные операторы;
- Циклы for и while;
- Объявление функций;
- Работа с потоками и файлами;
- Строгий синтаксис;
- Использование готовых модулей и классов.
Об этом я напишу в одной из следующих заметок. Хотелось бы получить хотя бы парочку комментариев на этот пост — интересно/неинтересно, понятно/непонятно и так далее. Кстати, если у вас есть вопросы, связанные с Perl (не обязательно с этим постом) — смело задавайте их в комментариях!
Надеюсь, серия постов о программировании на Perl поможет вам написать ваши первые простенькие скрипты. Со временем скрипты будут становится сложнее, в них станут использоваться новые технологии (ООП, регулярные выражения) и через какое-то время вы обнаружите, что знаете о Perl достаточно, чтобы делиться опытом с другими.
Далее: Условные операторы и циклы.
Метки: Perl, Языки программирования.
Установка и начало работы с Perl
Это первая часть учебника по Perl.
В ней вы узнаете, как установить Perl на Microsoft Windows и как начать
использовать его на Windows, Linux или Mac.
Вы узнаете, как установить и настроить среду разработки, или, говоря простым языком:
какой редактор или IDE использовать для Perl-программирования?
Также мы увидим стандартный пример «Hello World».
Windows
В Windows мы будем использовать DWIM Perl. Это пакет программ,
содержащий компилятор/интерпретатор Padre, Perl IDE,
и ряд модулей из CPAN.
Для начала зайдите на сайт DWIM Perl
и откройте страницу загрузки DWIM Perl для Windows.
Скачайте исполняемый файл и установите его в вашу систему. Предварительно
пожалуйста убедитесь, что у вас не установлена любая другая версия Perl.
Конечно, разные версии Perl можно заставить работать вместе, но как это сделать потребует дополнительных разъяснений.
Поэтому пусть пока у вас в системе будет установлена одна единственная версия Perl.
Linux
Большинство современных Linux-дистрибутивов поставляются со свежей версией Perl.
Её мы и будем использовать. В качестве редактора
вы можете установить Padre — большинство дистрибутивов дают возможность сделать это
с помощью стандартного менеджера пакетов. Или вы можете выбрать любой другой текстовый редактор.
Если вы дружите с Vim или Emacs, используйте его. Если нет,
попробуйте Gedit — простой и удобный.
Apple
Уверен, Маки также поставляются с предустановленным Perl, ну или вы можете легко установить его с помощью
стандартных средств установки.
Редактор и IDE
Хотя я это и советую, вовсе не обязательно использовать Padre IDE, чтобы писать код на Perl.
В следующей части учебника я перечислю пару редакторов и IDE, которые вы
можете использовать для программирования на Perl. Но даже если вы выберете другой редактор,
я бы рекомендовал — для пользователей Windows — установить упомянутый выше пакет DWIM Perl.
Он идет с большим количеством готовых Perl-модулей, это сэкономит вам массу времени и сил.
Видео
Вы можете посмотреть видео
Hello world with Perl (англ.),
которое я загрузил на YouTube. Также обратите внимание на
Beginner Perl Maven video course (англ.).
Первая программа
Ваша первая программа будет выглядеть, например, так:
use 5.010; use strict; use warnings; say "Hello World";
Рассмотрим её шаг за шагом.
Hello world
Как только вы установили DWIM Perl, вы можете нажать на
«Пуск -> Все программы -> DWIM Perl -> Padre», откроется редактор
с пустым новым файлом.
Введите:
print "Hello World\n";
Как вы, наверное, заметили, команды в Perl заканчиваются точкой с запятой ;.
Знак \n используется для обозначения перевода строки.
Строки заключены в двойные кавычки «.
Функция print печатает текст на экран.
В результате выполнения этого кода Perl выведет на экран текст, заканчивающийся переводом строки.
Сохраните файл как hello.pl, чтобы затем вы запустить его командой «Run -> Run Script».
Появится новое окно с результатами работы программы.
Готово, вы писали ваш первый Perl-скрипт.
Теперь давайте его немного усовершенствуем.
Perl в командной строке для тех, кто не пользуется Padre
Если вы не используете Padre или другую IDE,
вы не сможете запустить скрипт прямо из редактора.
По крайней мере, по умолчанию. Нужно будет открыть shell
(или cmd в Windows), перейти в каталог, где вы сохранили hello.pl
и набрать команду:
perl hello.pl
Так Perl-скрипты запускаются из командной строки.
say() вместо print()
Давайте немного улучшим наш однострочный Perl-скрипт:
Для начала нужно указать минимальную версию Perl, которую мы хотели бы использовать:
use 5.010; print "Hello World\n";
Теперь можете запустить скрипт еще раз, выбрав в меню
«Run -> Run Script», или нажав клавишу F5.
Перед запуском файл будет автоматически сохранен.
В целом, указание минимальной требуемой версии Perl является хорошей практикой.
В нашем случае это добавляет в Perl также несколько новых функций, в том числе оператор say().
say похож на print, но короче, и
автоматически добавляет в конце символ перевода строки.
Вы можете переписать ваш код так:
use 5.010; say "Hello World";
Мы заменили print на say и убрали \n с конца строки.
Сейчас вы скорее всего используете Perl версии 5.12.3 или 5.14.
Большинство современных Linux-дистрибутивов версии поставляются с Perl 5.10 или более поздней версии.
К сожалению, кое-где ещё работают старые версии Perl.
В них нет оператора say(), и, кроме того, могут потребоваться некоторые другие изменения
в примерах, которые мы рассмотрим позднее. В дальнейшем я буду отмечать, если используются возможности
версии 5.10.
«Ремни безопасности»
Помимо прочего, в каждой скрипт я настоятельно рекомендую добавлять несколько команд, меняющих
поведение Perl. Это две строки, так называемые прагмы, которые действуют подобно флагам компилятора
в других языках:
use 5.010; use strict; use warnings; say "Hello World";
Команда use говорит Perl, что нужно загрузить и использовать каждую прагму.
strict и warnings помогут вам отловить некоторые общие ошибки
в коде, а иногда даже просто не дадут вам их сделать.
Это очень удобно.
Чтение ввода
Теперь давайте ещё улучшим нашу программу: будем спрашивать у пользовательницы её имя, а затем
выводить его на экран.
use 5.010; use strict; use warnings; say "What is your name? "; my $name = <STDIN>; say "Hello $name, how are you?";
$name называется скалярной переменной, или просто: скаляр.
Переменные объявляются при помощи ключевого слова my.
(По секрету заметим, что на самом деле это одно из требований, добавленных прагмой strict).
Скалярные переменные всегда начинаются со знака доллара: $.
<STDIN> это инструмент для чтения строки с клавиатуры.
Введите наш новый код и запустите его, нажав клавишу F5.
Он спросит имя. Введите его и нажмите ENTER, чтобы сообщить Perl
об окончании ввода.
Обратите внимание, что вывод нашей программы слегка кривой: запятая после
имени появляется на новой строке. Это произошло потому, что ENTER, который вы нажали после ввода имени,
попал в переменную $name.
Избавляемся от переводов строк
use 5.010; use strict; use warnings; say "What is your name? "; my $name = <STDIN>; chomp $name; say "Hello $name, how are you?";
Это настолько распространенная в Perl задача, что есть специальная функция chomp,
которая удаляет концевой перенос строки.
Заключение
В начало каждого скрипта, который вы пишете, всегда добавляйте use strict; и use warnings;.
Также крайне рекомендуется добавлять use 5.010;.
Задания
Я обещал задания.
Попробуйте запустить следующий скрипт:
use strict; use warnings; use 5.010; say "Hello "; say "World";
Он не выводит сообщение в одну строку. Почему? Как это исправить?
Задание №2
Напишите скрипт, который запрашивает у пользовательницы два числа, одно за другим.
Затем выводит сумму этих двух чисел.
Что дальше
Следующая часть нашего учебника расскажет про
редакторы, IDE и среду разработки для Perl.
Программирование на Perl
I. Общий обзор
1. Обзор Perl
Введение
Естественные и искусственные языки
Пример вычисления среднего
Дескрипторы файлов
Операторы
Управляющие конструкции
Регулярные выражения
Чего вы не знаете, то вам (сильно) не навредит
II. Анатомия Perl
2. Всякая всячина
Атомы
Молекулы
Встроенные типы данных
Переменные
Имена
Скалярные значения
Контекст
Списочные значения и массивы
Хеши
Таблицы имен и дескрипторы файлов
Операторы ввода
3. Унарные и бинарные операторы
Термы и списочные операторы (влево)
Оператор «стрелка»
Автоинкрементирование и автодекрементирование
Возведение в степень
Идеографические унарные операторы
Операторы связывания
Мультипликативные операторы
Аддитивные операторы
Операторы сдвига
Именованные унарные операторы и операторы проверки файлов
Операторы сравнения
Операторы равенства
Оператор интеллектуального сопоставления
Операторы поразрядного действия
Логические операторы (короткого пути) в стиле С
Оператор диапазона
Условный оператор
Операторы присваивания
Оператор запятой
Списочные операторы (вправо)
Логические and, or, not и xor
Операторы С, отсутствующие в Perl
4. Операторы и объявления
Простые операторы
Составные операторы
Операторы if и unless
Оператор given
Операторы циклов
Оператор goto
Окаменевшие switch/case
Оператор многоточия
Глобальные объявления
Объявления с областью видимости
Прагмы
5. Поиск по шаблону
Бестиарий регулярных выражений
Операторы поиска по шаблону
Метасимволы и метазнаки
Классы символов
Квантификаторы
Позиции
Захват и группировка
Группировка без сохранения
Управление процессом
Замысловатые шаблоны
Определение собственных утверждений
6. Юникод
Не рассказывай, а показывай
Доступ к данным в Юникоде
Ошибочные представления о регистре
Графемы и нормализация
Сравнение и сортировка строк Юникода
Дополнительные возможности
Ссылки
7. Подпрограммы
Синтаксис
Семантика
Передача ссылок
Прототипы
Атрибуты подпрограмм
8. Ссылки
Что такое ссылка?
Создание ссылок
Использование жестких ссылок
Символические ссылки
Фигурные скобки, квадратные скобки и кавычки
9. Структуры данных
Массивы массивов
Хеши массивов
Массивы хешей
Хеши хешей
Хеши функций
Более сложные записи
Сохранение структур данных
10. Пакеты
Таблицы имен
Квалифицированные имена
Пакет по умолчанию
Изменение пакета
Автозагрузка
11. Модули
Загрузка модулей
Выгрузка модулей
Создание модулей
Замещение встроенных функций
12. Объекты
Краткая памятка по объектно-ориентированному жаргону
Система объектов Perl
Вызов методов
Создание объектов
Наследование классов
Деструкторы экземпляров
Управление данными экземпляров
Управление данными класса
Лось в посудной лавке (Moose)
Резюме
13. Перегрузка
Прагма overload
Обработчики перегрузки
Перегружаемые операторы
Конструктор копирования (=)
Когда обработчик перегрузки отсутствует (noniethod и fallback)
Перегрузка констант
Открытые функции перегрузки
Наследование и перегрузка
Перегрузка на этапе выполнения
Диагностика перегрузки
14. Связанные переменные
Связывание скаляров
Связывание массивов
Связывание хешей
Связывание дескрипторов файлов
Неочевидная ловушка при отвязывании
Модули для связывания в CPAN
III. Perl как технология
15. Межпроцессные взаимодействия
Сигналы
Файлы
Каналы
System V1PC
Сокеты
16. Компиляция
Жизненный цикл программ
Компиляция кода
Выполнение кода
Серверы компиляторов
Генераторы кода
Средства разработки кода
Компилятор и интерпретатор: авангардизм и ретро
17. Интерфейс командной строки
Обработка команд
Переменные среды
18. Отладчик Perl
Использование отладчика
Команды отладчика
Настройка отладчика
Автоматическое выполнение
Поддержка отладчика
Профилировщик Perl
19. CPAN
История
Обзор репозитория
Экосистема CPAN
Установка модулей из CPAN
Создание дистрибутивов для CPAN
IV. Perl как культура
20. Защита данных
Обработка ненадежных данных
Обработка ошибок синхронизации
Работа с ненадежным колом
21. Распространенные приемы программирования
Обычные промахи новичков
Эффективность
Стиль программирования
Беглый разговор на Perl
Генераторы программ
22. Переносимость программ Perl
Перевод строки
Старшинство байтов и ширина чисел
Файлы и файловые системы
Взаимодействие с системой
Межпроцессные взаимодействия (IPC)
Внешние подпрограммы (XS)
Стандартные модули
Дата и время
Интернационализация
Стиль
23. Документация в формате POD
Вкратце о pod
Трансляторы и модули pod
Создание собственных инструментов для работы с pod
Ловушки pod
Документирование программ Perl
24. Культура Perl
История практичности
Поэзия Perl
Достоинства программиста на Perl
События
Где и как получить помощь
V. Справочный материал
25. Специальные имена
Специальные имена, сгруппированные по типам
Специальные переменные в алфавитном порядке
26. Форматы
Форматы строк
Двоичные форматы
Форматы шаблонов
27. Функции
Функции Perl по категориям
Функции Perl в алфавитном порядке
28. Стандартная библиотека Perl
Библиотечное дело
Обзор библиотеки Perl
29. Модули прагм
attributes
autodie
autouse
base
bigint
bignum
bigrat
blib
bytes
charnames
constant
deprecate
diagnostics
encoding
feature
fields
filetest
if
inc::latest
integer
less
lib
locale
mro
open
ops
overload
overloading
parent
re
sigtrap
sort
strict
subs
threads
utf8
vars
version
vmsish
warnings
Пользовательские прагмы
Глоссарий
Алфавитный указатель
НОУ ИНТУИТ | Лекция | Введение в программирование на Perl
Аннотация: В этой лекции подробно разбираются особенности программирования
CGI-скриптов на языке Perl. Определяются правила вызова скрипта, передачи ему
данных и получение результатов работы скрипта для дальнейшего использования в
HTTP-обмене и генерации HTML-страниц. Разбираются причины популярности Perl-скриптов
среди Web-программистов.
Язык программирования Perl является основным средством разработки
CGI-скриптов для Web-узлов. Его не применяют только там, где требуется
высокая эффективность кода и нет стандартных библиотек для Perl.
Perl как язык разработки скриптов имеет ряд преимуществ. Перечислим их в порядке значимости:
- независимость от программно-аппаратной платформы;
- мощные средства разбора строк;
- простота работы с переменными окружения ;
- простота работы со входными и выходными стандартными потоками;
- возможность чтения заданного числа символов из входного потока;
- хешированные таблицы;
- возможность организации конвейеров;
- библиотеки TCP/IP-обмена;
- множество стандартных библиотек прикладных программ.
Все это делает программное обеспечение, написанное на Perl, мобильным, а разработку программ
— быстрой и простой.
Структура Perl-программы
У программы на языке Perl нет жестко заданной структуры. Точнее
сказать, программист не обязан ее соблюдать. Если же он захочет, чтобы
интерпретатор контролировал объявление и использование переменных и
конструкций языка, то при помощи класса strict он может такой контроль
установить.
Программа на Perl состоит из операторов языка, которые должны заканчиваться
символом «;». Например:
print "Привет, Perl.";
В общем случае операторы делятся на простые и составные. Простой оператор —
это оператор print, например, а составной — while():
while() {s/</</g; s/>/>/g; print $_;};
Программа на Perl исполняется интерпретатором Perl. Есть и
компиляторы с этого языка, но они используются реже. При
программировании CGI-скриптов в Unix интерпретатор вызывается из того
же файла, который содержит программу, например:
#!/usr/local/bin/perl print "Привет, Perl.";
В данном случае первая строка — это вызов интерпретатора с указанием полного
пути к нему от корневого каталога файловой системы.
Вообще говоря, символ «#» — это символ начала комментария в Perl.
Последовательность символов от символа «#» до конца строки
рассматривается как комментарий. Часто в качестве комментария
используют целые строки. В этом случае символ «#» ставится в первой
позиции строки:
#!/usr/local/bin/perl # #Печатаем HTML-заголовок # print "Content-type: text/html\n\n"; # #Содержание документа # print "Perl и CGI.";
Данный пример демонстрирует не только использование комментариев, но
еще и формирование HTTP-заголовка. Без этого заголовка система выдаст
сообщение о внутренней ошибке сервера, а в файле журнала ошибок
появится запись о неправильном заголовке.
В последнее время основным рабочим местом авторов HTML-страниц и
CGI-скриптов стали системы на платформе Windows. Как известно, конец
строки в Windows и в Unix обозначается разными последовательностями
неотображаемых символов. Если автор использует текстовый редактор в
Windows, а потом как binary копирует файл в Unix, то эти символы
передаются. Сервер начинает сообщать об ошибках, которые автору не
видны. В таком случае можно сделать следующее: либо копировать
программы как char, тогда происходит перекодировка, либо использовать
«умные» текстовые редакторы.
Удобна также и Samba, которая позволяет редактировать «по месту» из
Windows в Unix.
Стандартный поток вывода
Основная цель создания CGI-скрипта — обработка данных запроса
пользователя и формирование отклика сервера на этот запрос. Можно
рассматривать и другие задачи, которые позволяют решать CGI-скрипты, но
эта задача — главная. Скрипт должен формировать не просто отклик, а
HTTP-отклик. Это означает, что он должен сформировать заголовок и тело
HTTP-сообщения, которые отделяются друг от друга пустой строкой.
Проще всего реализовать такой отклик с помощью команды print:
#!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML><HEAD></HEAD><BODY>"; print "<h2>Perl и CGI.</h2>"; print "</BODY></HTML>";
Первая строчка определяет заголовок HTTP-отклика и пустую строку
(два символа «\n\n»). Остальные операторы print формируют тело
сообщения. Оператор print пишет в стандартный вывод
список своих аргументов. Вообще говоря, print можно использовать для
вывода данных в любой файл. Если имя файла не указано, то вывод
осуществляется в стандартный поток вывода.
Переменные окружения
Скрипт порождается сервером в некоторой операционной среде. Эта
среда называется окружением (environment). Частью окружения являются
так называемые переменные окружения.
При вызове скрипта их порождает и присваивает им значения HTTP-сервер.
Список переменных определен спецификацией Common Gateway Interface.
В Perl существует встроенный системный массив переменных окружения %ENV. Символ «%» перед именем массива означает, что это массив
ассоциативный, т.е. значение элемента массива может быть выбрано путем
указания ключа, с которым оно связано. Например, нужно определить метод
доступа к скрипту:
#!/usr/local/bin/perl print "Content-type: text/plain\n\n"; print "REQUEST_METHOD:$ENV{REQUEST_METHOD}";
В данном контексте символ «$» перед именем массива не должен вводить
в заблуждение. Обращение происходит к элементу ассоциативного массива.
Это скаляр, поэтому и применяется символ «$». Ключ, по которому
выбирается значение, указан в фигурных скобках.
Очень полезен скрипт распечатки всех переменных окружения, которые
переданы скрипту ( perlenv2.htm ). Обычно этот отчет получают при отладке
HTML-форм:
#!/usr/local/bin/perl print "Content-type: text/plain\n\n"; foreach $hkey (keys %ENV) { print "$hkey:$ENV{$hkey}"\n; }
Этот простой скрипт распечатывает значения всех переменных окружения, используя цикл foreach.
В этом цикле переменная цикла hkey
пробегает по всем уникальным ключам (именам переменных окружения ),
которые доставляет функция keys.
4.13.4. Операция qw{ } | 91 | 7.2. Доступ к файлам | 151 |
4.13.5. Операция «документ | 91 | 7.3. Операции с файлами | 162 |
здесь» |
| 7.4. Получение информации о | 168 |
4.14. Выражения | 94 | файле |
|
4.14.1. Термы | 95 | 7.5. Операции с каталогами | 171 |
4.14.2. Приоритет операций | 95 | Вопросы для самоконтроля | 174 |
4.14.3. Контекст | 100 | Упражнения | 174 |
Вопросы для самоконтроля | 102 | Глава 8. Форматы | 175 |
Упражнения | 102 | 8.1. Объявление формата | 175 |
Глава 5. Операторы | 104 | 8.2. Использование нескольких | 182 |
5.1. Простые операторы | 104 | форматов |
|
5.2. Модификаторы простых | 105 | Вопросы для самоконтроля | 186 |
операторов |
| Глава 9. Ссылки | 187 |
5.2.1. Модификаторы if и | 106 | 9.1. Виды ссылок | 187 |
unless |
| 9.2. Создание ссылок | 190 |
5.2.2. Модификаторы while и | 107 | 9.2.1. Операция ссылки «\» | 190 |
until |
| 9.2.2. Конструктор | 191 |
5.2.3. Модификатор foreach | 109 | анонимного массива |
|
5.3. Составные операторы | 110 | 9.2.3. Конструктор | 191 |
5.3.1. Блоки | 111 | анонимного ассоциативного |
|
5.3.2. Операторы ветвления | 113 | массива |
|
5.4. Операторы цикла | 116 | 9.2.4. Другие способы | 192 |
5.4.1. Циклы while и until | 116 | 9.3. Разыменование ссылок | 194 |
5.4.2. Цикл for | 118 | 9.3.1. Разыменование простой | 195 |
5.4.3. Цикл foreach | 122 | скалярной переменной |
|
5.5. Команды управления циклом | 125 | 9.3.2. Блоки в операциях | 195 |
5.5.1. Команда last | 126 | разыменования ссылок |
|
5.5.2. Команда next | 128 | 9.3.3. Операция | 196 |
5.5.3. Команда redo | 129 | разыменования «->» |
|
5.6. Именованные блоки | 131 | 9.4. Символические ссылки | 198 |
5.7. Оператор безусловного | 133 | 9.5. Использование ссылок | 200 |
перехода |
| 9.5.1. Замыкания | 201 |
Вопросы для самоконтроля | 134 | 9.5.2. Массив массивов | 203 |
Упражнения | 135 | 9.5.3. Другие структуры | 204 |
Глава 6. Операции ввода/вывода | 137 | данных |
|
6.1. Операция ввода команды | 137 | Вопросы для самоконтроля | 210 |
6.2. Операция <> | 140 | Упражнения | 210 |
6.3. Функция print | 145 | Глава 10. Работа со строками | 212 |
Вопросы для самоконтроля | 147 | 10.1 Регулярные выражения | 212 |
Упражнения | 147 | 10.1.1. Метасимволы | 213 |
Глава 7. Работа с файлами | 148 | 10.1.2. | 215 |
7.1. Дескрипторы файлов | 148 | Метапоследовательности |
|
Perl для чайников, шпаргалка
Пол Хоффман
Perl позволяет вам с самого начала писать мощные программы, независимо от того, являетесь ли вы новичком в программировании или экспертом. Perl предлагает стандартные инструменты программирования — операторы сравнения, квантификаторы сопоставления с образцом, функции списков — и имеет ярлыки для ввода диапазонов символов. Perl также предлагает тесты файлов, чтобы вы могли быстро найти то, что хотите.
Самые полезные файловые тесты в Perl
Программирование на Perl довольно простое, оно выполняется с использованием букв, которые вы используете для проверки файлов.Например, r проверяет, может ли файл быть r ead, а T ищет файл t ext. Вот самые полезные файловые тесты в Perl:
Тест | Описание |
---|---|
-e | Файл существует. |
-r | Файл можно прочитать. |
-w | Файл можно записать. |
-z | Длина файла ровно ноль байт. |
-d | Именованный элемент — это каталог, а не файл. |
-Т | Файл — текстовый файл. (Проверяется первая часть файла, , и это текстовый файл, если менее 30 процентов или около того из символов не печатаются.) |
-Б | Файл — двоичный файл. (Это полная противоположность теста -T — это двоичный файл, если более 30% или около того символов не печатаются.) |
-с | Размер файла в байтах. |
-C | Возраст создания файла. |
-А | Доступ к возрасту файла. |
-М | Возраст модификации файла. |
Специальные символы в Perl
Как и любой язык программирования, Perl использует специальные команды для специальных символов, таких как обратные пробелы или вертикальные табуляции.Итак, если вам нужно запрограммировать звонок, звуковой сигнал или просто возврат каретки, проверьте следующую таблицу для символа, который будет его воспроизводить:
Персонаж | Значение |
---|---|
n | Новая строка |
р | Возврат каретки |
т | Символ табуляции |
f | Символ подачи |
б | Символ возврата |
в | Вертикальный выступ |
а | Звонок или сигнал |
e | Эскейп-персонаж |
Perl Операторы сравнения True-False
Когда вы программируете на Perl или на любом другом языке, вы постоянно используете операторы сравнения.В следующей таблице показаны общие сравнения Perl как в математической, так и в строковой форме:
Сравнение | Математика | Строка |
---|---|---|
Равно | == | экв |
Не равно | ! = | ne |
Менее | < | л |
Больше | > | gt |
Меньше или равно | <= | le |
Больше или равно | > = | ge |
Функции общего списка в Perl
Perl был изначально разработан для облегчения обработки отчетов.Отчеты часто содержат списки, и вы можете использовать Perl для выполнения определенных функций в списке. В следующей таблице показаны общие функции списков, их эквиваленты для монтажа и поясняется, что делает функция:
Функция | эквивалент сращивания | Что он делает |
---|---|---|
нажать (@r, @s) | сращивание (@r, $ # r + 1,0, @s) | Добавляет справа в список |
поп (@r) | сращивание (@r, $ # r, 1) | Удаляет из списка справа |
сдвиг (@r) | стык (@r, 0, 1) | Удаляет из списка слева |
без переключения (@r, @s) | стык (@r, 0, 0, @ s) | Добавляет в список слева |
Ярлыки для диапазонов символов в Perl
Вы программируете на Perl и хотите использовать ярлык кода для представления чего угодно, от числа до не числа, до любой буквы или числа.Вам повезло, потому что в следующей таблице представлен код, показано, для чего это ярлык, и описано его.
Код | Заменяет | Описание |
---|---|---|
г | [0..9] | Любая цифра |
Вт | [a-zA-Z_0-9] | Любой буквенно-цифровой символ |
с | [тнрф] | Пробельный символ |
Д | ^ [0.[tnrf] | Непробельный символ |
Perl Квантификаторы сопоставления с шаблоном
Perl позволяет вам использовать общие символы, чтобы указать программе, которую вы пишете, сопоставлять данные один раз, никогда или до определенного количества раз. В следующей таблице показано, какой символ использовать для получения нужного совпадения:
Символ | Значение |
---|---|
+ | Совпадение 1 или более раз |
* | Совпадение 0 или более раз |
? | Совпадение 0 или 1 раз |
{n} | Совпадение ровно n раз |
{n,} | Совпадение не менее n раз |
{n, m} | Совпадение не менее n, но не более m раз (эти значения должны быть меньше 65 536) |
Об авторе книги
Пол Хоффман написал и способствовал разработке множества стандартов Интернета.Он ветеран Интернета с 20-летним стажем и автор более десятка компьютерных книг.
.
Perl — манекены
Переключить навигацию
Поиск
Отправить
Обзор тем
Live
- Бытовая электроника
- Еда и напитки
- Игры
- Здоровье
- Личные финансы
- Дом и сад
- Домашние животные
- Отношения
- Спорт
- Религия
Центр искусства
2
- Ремесла
- Образование
- Языки
- Фотография
- Подготовка к экзаменам
Работа
- Социальные сети
- Программное обеспечение
- Программирование
- Веб-дизайн и разработка
- Бизнес
- Карьера
- Компьютеры
Индивидуальные решения
Поиск
Отправить
- Home
- Программирование
- Perl
Поиск
- Home
- Программирование
- Perl
Выберите тему
Переключить навигацию
- Home
- Программирование
- Perl
- Сети
- Большие данные
- Java
- Электроника
- Игры
- R
- Google SketchUp
- AutoCAD
- C ++
- C
- Облачные вычисления
- Базы данных
- Python
- Certification
- Радиолюбители
- MATLAB
- PHP
.Учебное пособие по
Perl для начинающих: научиться за 1 день
- Home
Testing
- Back
- Agile Testing
- BugZilla
- Cucumber
- Database Testing
9000 9000 J2000 Database Testing
- Назад
- JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP
- Назад
- Центр качества
- 000300030003 SoapUI
- Управление тестированием
- TestLink
9000
SAP
- Назад
- ABAP
- APO
- Начинающий
- Basis
- BODS
- BI
- BPC
- CO
- Назад
- CRM
- Crystal Reports
- QM4000
- QM4
- Заработная плата
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- Successfactors
- Учебники SAP
- Apache
- Назад
- Java
- JSP
- Kotlin
- Linux
- Linux
- Kotlin
- Linux
- Perl
js
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala
- SQL
- SQL
- UML
- VB.Net
- VBScript
- Веб-службы
- WPF
000
000
0003 SQL
000
0003 SQL
000
Обязательно учите!
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Business Analyst
- Создание веб-сайта
- CCNA
- Облачные вычисления
- 00030003 COBOL
- 9000 Compiler
- 00030002 9000 Compiler
- Ethical Hacking
- Учебники по Excel
- Программирование на Go
- IoT
- ITIL
- Jenkins
- MIS
- Сети
- Операционная система
- 0003
- Назад
- Управление проектами Обзоры
- Salesforce
- SEO
- Разработка программного обеспечения
- VB A
- 9000 Встроенные системы
- 00030002 9000 Compiler
Big Data
- Назад
- AWS
- BigData
- Cassandra
- Cognos
- Хранилище данных
- HBOps
- HBOps
- MicroStrategy
- MongoDB
- NiFi
00030003
0003
.
Контрастные одинарные и двойные кавычки в Perl
- Программирование
- Perl
- Контрастные одиночные и двойные кавычки в Perl
Пол Хоффман
Подведем итоги основного различия между одинарными и двойными кавычками: Одинарные кавычки не интерпретируются, и двойные кавычки делают. То есть, если вы заключите что-то в одинарные кавычки, Perl предполагает, что вам нужны точные символы, которые вы помещаете между метками, за исключением комбинации косой черты и одинарной кавычки (‘) и комбинации двойной косой черты (\).Однако, если вы помещаете текст в двойные кавычки, Perl интерпретирует имена переменных. Perl также интерпретирует специальные символы внутри буквальных строк, заключенных в двойные кавычки.
Взгляните на следующую короткую программу, в которой в операторе печати используются одинарные кавычки:
$ Book = «Perl для чайников»;
print «Название $ Book.»;Когда вы запускаете программу, Perl отображает
Название: $ Книга.
Теперь замените одинарные кавычки на двойные кавычки в инструкции печати:
$ Book = «Perl для чайников»;
print «Название $ Книга.»;Когда вы запустите программу сейчас, Perl отображает
Название — Perl для чайников.
В первой программе одинарные кавычки говорят Perl не интерпретировать ничего внутри кавычек. Во второй программе Perl видит двойные кавычки, интерпретирует переменную $ Book, а затем вставляет ее в текст.
Обратите внимание, что точка в конце оператора печати появляется сразу после значения $ Book. После интерпретации переменной $ Book Perl снова начинает поиск текста, находит точку и печатает его.
Вы можете иметь столько переменных, сколько хотите внутри строк, заключенных в двойные кавычки. Например:
$ Word1 = «поблагодарить»;
$ Word2 = «ты»;
$ Sentence = «Я просто хотел сказать $ Word1 $ Word2.»;
print $ Sentence;Эти строки печатают
Я просто хотел сказать спасибо.
Perl интерпретирует каждую переменную и помещает ее непосредственно в переменную $ Sentence. Обратите внимание, что когда оператор печати отображает содержимое $ Sentence, он вставляет пробел между двумя словами в кавычках, как и должно, и точкой в конце.Perl выбирает только переменные и заменяет их, но оставляет другие символы, такие как пробелы, точно так, как вы их вводите.
Об авторе книги
Пол Хоффман написал и внес свой вклад в многочисленные стандарты Интернета. Он ветеран Интернета с 20-летним стажем и автор более десятка компьютерных книг.
.