Perl - интерпретируемый язык высокого уровня. Был разработан Ларри Уоллом в 1987 году как скриптовый язык общего назначения для UNIX. С тех пор язык претерпел множество изменений и стал широко популярным среди программистов. Ларри Уолл продолжает следить за развитием основных возможностей языка и его следующей версии, Perl 6.
Perl заимствует особенности других языков программирования, включая C, языке сценариев командной оболочки (sh), AWK, и т.д. Язык предоставляет собой мощное средство обработки текста, что облегчает работу с текстовыми файлами. Он получил широкую популярность в конце 1990-х как язык сценариев CGI, в частности, из-за его способности разбора.
В дополнение к CGI, Perl используется для графического программирования, системного администрирования, сетевого программирования, финансов, биоинформатика и других приложений. Perl был прозван как “швейцарский нож среди языков программирования” из-за его гибкости и мощности. Он также называется “клейкой лентой, которая соединяет Интернет вместе”.
Этому языку посвящено множество сайтов для пользователей различного уровня. Периодически проводятся встречи, есть русскоязычный журнал о Perl “Pragmatic Perl” (анонс и ссылки в конце страницы ). Так же есть сайт, на котором есть подробные интерактивные уроки для новичков.
Математические операции
1 2 3 4 5 6 |
|
апостроф и кавычки (одинарные и двойные кавычки)
Данные в одинарных кавычках читаются посимвольно.
Данные в двойных кавычках могут содержать управляющие символы (например, \n).
Управляющие символы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Символ точка и повторение строки
Точка помогает объединить строки. Например
1
|
|
даст текст и перевод строки
1 2 |
|
Или
1
|
|
выдаст
L=15
Повторение данных делается просто с помощью икса (x). Например:
1
|
|
даст
texttexttext
а эта строка
1
|
|
даст
1 2 3 |
|
Дебажим
В начало файла после
1
|
|
можно добавить
use warnings;
это выдаст в консоль ошибки, если они есть. Например:
1
|
|
выдаст
1 2 |
|
То есть ругнулся, но выполнил перемножение. Более подробно можно получить данные, если вместо warnings использовать
1
|
|
Используя прошлый пример, увидим это:
1 2 3 4 5 6 |
|
Переменные
- Скалярные переменные
Скалярные переменные начинаются с $ и могут содержать только одно значение. Например:
1 2 3 4 |
|
В итоге получим 1030, мы же символ перевода строки (\n) не добавляли.
*Бинарные операции присваивания Нужны тогда, когда значение переменной нужно изменить и оставить в той же переменной. Например
1 2 3 |
|
а можно и так:
1 2 3 |
|
1 2 |
|
и т.д.
Операторы
- Операторы сравнения
Для чисел
1 2 3 4 5 6 |
|
То же самое для строк
1 2 3 4 5 6 |
|
Оператор chomp
Оператор удаления символа новой строки. Например, если что-то нужно вывести строку без переноса.
1 2 |
|
в одну строчку:
chomp ($stroka = “text\n”);
Управляющие конструкции
- if Вид
1 2 |
|
Например
1 2 3 |
|
Добавим ещё одно действие, если значение не верно.
1 2 3 4 5 6 |
|
- while Поддерживает, пока условие истино. Например
1 2 3 4 5 |
|
Увидим что-то такое
1 2 3 4 5 6 |
|
Построчный ввод
Пригодится, если нужно ввести данные с клавиатуры. Например
1 2 |
|
Вводите данные, жмёте Enter и программа выводит то, что написано.
Примеры
- Выводим просто сообщение
1 2 |
|
- Читаем данные с клавиатуры
1 2 3 4 5 |
|
- Смотрим инфу по памяти
1 2 3 4 5 6 7 |
|
- Запуск внешних программ
Файл 1.pl:
1 2 3 4 |
|
Результат perl 1.pl:
1 2 3 4 |
|
- Вычисление длинны окружности, зная радиус
1 2 3 4 5 6 7 |
|
Игра с выводом текста в Windows в cmd UTF-8 на русском языке
Так получилось, что дочке хотелось поиграть, а маме надо было, чтобы дочка поучила цифры. Решил сделать такую своеобразную угадайку. Проблемка только в том, что нужно, чтобы в консоли Windows (cmd) Perl выводил текст на русском языке. Решено так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
Как удалить строки с определёнными символами из файла
В данном примере мы удалим все строки с комментариями (#) из файла. Итак, есть файл 1.txt
1 2 3 4 5 6 |
|
Удалить все комментарии можно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
В файле 2.txt видим это:
1 2 3 |
|
Вообще, если файл будет большой, то программа выше может легко забить всю память и увести компьютер в SWAP. Чтобы этого не случилось, используем Tie::File и переделаем текст программы так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Tie::File интересна тем, что позволяет работать с файлом напрямую как с массивом и иметь доступ к отдельным строкам, не загружая весь файл в память. То есть первая строка будет в массиве под номером 0, вторая под 1 и т.д. Учтите, что работа идёт над первоначальным файлом, так что имейте копию, если надо будет вернуть всё!
Журнал Pragmatic Perl
В этом номере:
От редактора. Два года журналу, Вячеслав Тихановский
Подключение в Mojolicious модели для бизнес-логики, Александр Ружников
Рассмотрен вариант автоматического подключения классов моделей из указанной директории
Мутационное тестирование, Вячеслав Тихановский
Еще один способ сделать Perl-код качественнее — мутировать тесты для нахождения непротестированного кода
Про переменные и сигнатуры в Perl 6, Андрей Шитов
В этой статье описаны интересные синтаксические возможности Perl 6, о которых не было упомянуто в прошлый раз
Модули в Perl 6, Андрей Шитов
Краткий обзор основных моментов, которые полезно знать при работе с модулями в Perl 6
Обзор CPAN за февраль 2015 г., Владимир Леттиев
Рубрика с обзором интересных новинок CPAN за прошедший месяц.
Интервью с Владимиром Леттиевым, Вячеслав Тихановский
Владимир Леттиев (crux) — постоянный автор журнала, модулей на CPAN, основатель perlnews.ru