как запустить скрипт perl
Perl — особенный язык программирования
Он может связать два любых проекта в одно целое.
Есть такой язык программирования — Perl. Если вы заинтересовались информационными технологиями в эпоху Python и JavaScript, вы, вероятно, даже не знаете, что он существует — а он есть и его много. Если представить, что наши ИТ-проекты — это красивые квартиры с евроремонтом, то Perl можно представить как старые магистральные трубы, по которым вода приходит в квартиру.
Ещё Perl называют «скотчем для интернета», потому что он может соединять какие угодно проекты, написанные на любых языках:
Perl хорошо умеет запускать системные команды в операционной системе. Благодаря этому Perl может взять результат работы одной программы, преобразовать их как нужно и отдать в другую.
✅ Суперсила Perl — в работе с регулярными выражениями, полная поддержка которых уже встроена в язык. Perl может взять любые данные, обработать их по нужным правилам и очень быстро выдать результат в удобном для пользователя виде.
❌ Слабое место Perl — его сложность для новичков, если выбрать его своим первым языком для изучения. В нём всё не так просто с ООП, слишком вольная трактовка операторов сравнения и огромные комбинации спецсимволов, в которых сложно разобраться на старте. Поэтому Perl лучше не выбирать как первый язык, а вернуться к нему, когда возникнет практическая необходимость.
Если у вас MacOS или Linux — у вас уже есть Perl
Интерпретатор Perl встроен почти во все UNIX-подобные операционные системы, поэтому его можно использовать в любой момент без установки. Единственное, что нужно проверить — что в системных настройках правильно указан путь к интерпретатору.
Если у вас Windows, то всё сложнее — нужно будет использовать отдельный интерпретатор, написанный специально для вашей версии Windows. Дополнительный минус — так как это не родная среда для Perl, часть команд в таком режиме совместимости работать не будет.
Синтаксис
Синтаксис Perl похож одновременно на два языка:
Переменные. Начинаются со специальных символов:
$ — число, строка или ссылка на что-то
$thecode = «Привет, это журнал Код!»
& — функция (в Perl это тоже переменная), которая получает аргументы и возвращает значение
Условный оператор. Почти такой же как в C:
$a = shift;
if($a > 10) <
print «a > 10\n»;
>
Ещё есть unless — то же самое, что ЕСЛИ, только наоборот:
unless($a == 0) <
# «выполняется, только если a не равно нулю»
>
Циклы. То же самое, как и везде:
Или можно сделать как в PHP:
Циклы с пред- и постусловием. Если вы знаете хотя бы Pascal, то вы знаете и циклы на Perl:
Операторы присваивания и математические операторы. В этом плане Perl очень похож на любой C-подобный язык и использует те же самые команды:
Применение на практике
Perl — мощный язык для работы с текстом и любыми символьными данными. На нём легко писать программы, которые автоматизируют работу с компьютером, выполняют рутинные операции или преобразуют одни данные в другие.
Например, эта команда
заменит все упоминания слова Java на слово Perl в файле resume.txt, и одновременно сделает резервную копию оригинального файла.
А эта — удаляет все повторяющиеся элементы массива:
Если нужно очистить файл от всех HTML-команд, можно использовать такой код:
use strict;
use utf8;
use HTML::Entities;
# исходим из того, что мы уже получили содержимое HTML-файла и можем с ним работать
utf8::decode($_);
s/ ]*>//g;
decode_entities($_);
utf8::encode($_);
Иногда это всё-таки сложно
Иногда готовый код на Perl сложно понять и прочитать. Это из-за того, что Perl — очень гибкий язык программирования с полной поддержкой регулярных выражений. Чтобы понять, что делают некоторые программы и функции, недостаточно просто посмотреть на них — нужно понимать правила преобразования регулярных выражений и знать, как одни команды в регулярках влияют на другие.
Самый популярный пример такого кода:
❌❌❌ И этот код тоже не запускайте — можно легко стереть все свои данные и повредить файловую систему.
Не все программы на Perl выглядят как эта, но без понимания того, как работают регулярные выражения, понять код бывает очень сложно.
Вывод: регулярные выражения — это сила. Убедились в этом в очередной раз. Если ещё не убедились — почитайте, как с их помощью можно настроить автозамену нецензурной лексики на благопристойные выражения.
Что пишут на Perl
Если коротко: всё, где нужно автоматизировать работу компьютера или преобразование данных, можно написать на Perl.
Системное программирование. Сюда можно отнести работу с учётными записями пользователей в сетях любой сложности и конфигурации, администрирование сетей и пользователей в организации. Ещё Perl используют для автоматизации рутины — наладить резервное копирование по расписанию, отправку писем с ежедневными отчётами, сбор, обработку и анализ разных данных.
CGI-скрипты — любые скрипты для обмена данными между сервером и клиентом. Для Perl неважно, в каком виде данные выходят и поступают обратно, — он переведёт их в нужный вид и отправит из одного сервиса в другой.
Объединение сервисов или программ. Если у вас есть две программы, одна из которых выдаёт готовый результат в одном формате, а другой он требуется в другом формате, то Perl поможет вам их соединить. Работает это так: вы пишете скрипт, который запускает первую программу, получает оттуда данные, преобразует их в нужный вид и отправляет во вторую программу. В итоге всё это работает как одно целое.
Востребован ли Perl сейчас
Perl востребован, потому что в мире накопилось много старого кода, который нужно поддерживать. Дело в том, что программы на Perl работают стабильно, предсказуемо и без сбоёв, а с 1987 года их написано очень много.
Но порог входа в этот язык довольно высок — нужно обладать навыками хотя бы на уровне мидла, чтобы быть востребованным специалистом.
С чего начать
Почитать: учебник по Perl для новичков. Перевод иногда хромает, но это лучший вариант для тех, кто только начинает изучение языка.
Если знаете английский — начните с официальной страницы языка.
Посмотреть: Perl Tutorial или Great Perl Tutorial For Begginers. Тут уже всё на английском, зато более наглядно.
Бумажная книга: Изучаем Perl Рэндала Шварца и Тома Феникса. Для тех, кто любит основательно подойти к процессу и не любит читать с экрана.
Как запустить скрипт Perl
Perl не входит в стандартную поставку ОС Windows,
но его можно бесплатно скачать с нескольких официальных сайтов фирм-поставщиков
программных инструментов, свободно использовать и даже распространять в составе своих
собственных инструментов.
установка вместе с закачкой занимает 5-10 минут в зависимости от.
После установки со всеми умолчаниями( рекомендованный способ ):
А) появится папка C:\Perl
Б) папка с подкаталогами займёт место
100Мб; в дальнейшем может расти за счет установки доп. модулей;
модули лежат в простом текстовом виде, частью системы Windows не являются и могут быть просто удалены вместе с c:\perl, если perl больше не нужен
В) файлы с расширением .pl будут зарегистрированы и привязаны к приложению c:\perl\bin\perl.exe
что позволит запускать их кликом мышки или простым набором только имени файла в ком. строке( см. ниже )
Г) В системной переменной PATH пропишется путь c:\perl\bin
Д) само приложение Perl является консольным приложением Windows, поэтому рекомендуется запускать его
в стандартном консольном окне cmd/bat
общий способ запуска такой:
c:\Users\User> perl file.pl аргументы
либо однострочником
как было сказано в пункте В, если дополнительные ключи запуска не требуются, можно просто набрать file.pl
и скрипт выполнится
Е) Шрифт консольного окна(в свойствах окна) рекомендуется выставить TrueType Lucida Console полюбившегося размера,
а ширину окна и буфер пошире и поглубже, не скупитесь.
Ж) Если вдруг понадобятся дополнительные модули, то они добавляются с помощью команды
З) Документация по Perl доступна в текстовом виде по команде perldoc,
в HTML-виде через меню [Пуск]->ActivePerl, а так же на сайте http://perldoc.org
Язык Perl является кроссплатформенным, поэтому при аккуратном программировании
написанная программа будет работать одинаково на Windows, Linux, Mac OS X, Solaris, AIX, OpenVMS, a также мобильных телефонах Android
Начинаем работать с Perl
Как вы видите, каждое выражение заканчивается точкой с запятой, строка заключается в апострофы.
Одна из первых вещей, которые необходимо запомнить, как и в некоторых других языках, это то, что важен тип кавычек; если вы используете одиночные кавычки (апострофы), то выражение внутри трактуется как строка текста; если вы используете двойные кавычки, то в выражении можно использовать специальные символы и переменные. Например, напишем следующий код:
В результате будет выведена строка «$a\n’»
Если использовать код
то с новой строки будет выведена сообщение «hello world»
Всегда проверяйте правильность строк внутри двойных кавычек.
В системе Linux вы можете первой строкой написать #!/usr/bin/perl и использовать команду chmod для того чтобы сделать файл скрипт выполняемым. Тогда для запуска скрипта вам нужно будет только написать его имя, например ./scriptname.pl. Обычно строки, начинающиеся со знака # являются комментарием, но первая строка в *nix указывает системе интерпретатор скрипта.
Программирование, как правило, включает блоки данных или команд, которые используются внутри циклов, и Perl не является исключением. Фактически он был спроектирован для работы с текстовыми файлами, то есть читает информацию находящуюся внутри них или со стандартного ввода (набор на клавиатуре) или из списка файлов в командной строке. Вот простой пример скрипта:
Сохраните файл как test.pl и запустите его используя следующую команду:
Второй test.pl можно заменить именем любого другого текстового файла. Взглянув на скрипт, можно увидеть блоки команд в цикле, заключенные в фигурные скобки.
Для задания условий в цикл while используются значки <>. Специальное указание «<>» означает что используется стандартный ввод, а специальная переменная «$_» означает текущую строку ввода. Таким образом, скрипт читает строку со стандартного ввода и выводит её. Если вы просто наберете perl test.pl, он будет ожидать пока вы наберете какую-нибудь строку и затем выведет её, и так будет продолжаться пока вы не нажмете Ctrl & D, что будет означать конец скрипта.
» сравнивает совпадают ли переменные, а оператор «!
» проверяет несовпадение. Добавть в конец скрипта следующий строки и запустите его командой perl test.pl test.pl:
Результатом будут две строки кода и перед каждой примерно такое сообщение: «Fred is here, line 7.»
Теперь нас есть простой скрипт, который ищет в файле слово «Fred», но для чего мы можем его использовать?
Например, его легко встроить в какой-нибудь полезный CGI скрипт, скажем, для поиска строки в таблице данных.
Давайте используем некоторые данные: составим простую таблицу с контактными номерами телефонов. Она будет содержать имя человека, и два номера.
Сохраним файл в формате CSV, и загрузим его на сервер в ту же директорию, в которой будет наш скрипт. Мы создадим скрипт для извлечения строки, содержащей данные человека, которого необходимо найти. Скрипт в конце содержит полный код.
Сначала мы посылаем заголовок, чтобы сказать веб браузеру, что передается простой текст; как и в других заголовках, это необходимо сделать c новой строки, и затем добавить пустую строку, показывающую конец заголовка и начало содержимого веб страницы.
Затем команда open читает файл, расположенный в той же директории, что и скрипт, CSV файл, который мы создали в Excel; в качестве идентификатора файла используется имя «CONTACTS». Его мы будем использовать в цикле while для чтения файла. Поскольку все данные разделены запятой, мы можем записать их в различные переменные.
Первая команда next if нужна для пропуска следующей итерации цикла; мы убеждаемся, что не выведем строку, содержащую заголовок, который Excel добавляет в CSV файл. Вторая команда используется для нескольких вещей; здесь есть сравнение, с которым мы знакомились раньше, но в конце используется маленькая буква i, которая заставляет Perl игнорировать блок.
Эта часть проверяется на совпадение и пропускаются все строки, кроме совпадающих, скрипт завершает работу, выдав все контакты, которые найдет.
Чтение списка контактов из CSV файла с помощью 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
Apple
Уверен, Маки также поставляются с предустановленным Perl, ну или вы можете легко установить его с помощью стандартных средств установки.
Редактор и IDE
Он идет с большим количеством готовых Perl-модулей, это сэкономит вам массу времени и сил.
Видео
Вы можете посмотреть видео Hello world with Perl (англ.), которое я загрузил на YouTube. Также обратите внимание на Beginner Perl Maven video course (англ.).
Первая программа
Ваша первая программа будет выглядеть, например, так:
Рассмотрим её шаг за шагом.
Hello world
Готово, вы писали ваш первый Perl-скрипт.
Теперь давайте его немного усовершенствуем.
Perl в командной строке для тех, кто не пользуется Padre
Если вы не используете Padre или другую IDE, вы не сможете запустить скрипт прямо из редактора. По крайней мере, по умолчанию. Нужно будет открыть shell (или cmd в Windows), перейти в каталог, где вы сохранили hello.pl и набрать команду:
Так Perl-скрипты запускаются из командной строки.
say() вместо print()
Давайте немного улучшим наш однострочный Perl-скрипт:
Для начала нужно указать минимальную версию Perl, которую мы хотели бы использовать:
В целом, указание минимальной требуемой версии Perl является хорошей практикой.
Вы можете переписать ваш код так:
Мы заменили print на say и убрали \n с конца строки.
Сейчас вы скорее всего используете Perl версии 5.12.3 или 5.14. Большинство современных Linux-дистрибутивов версии поставляются с Perl 5.10 или более поздней версии.
«Ремни безопасности»
Помимо прочего, в каждой скрипт я настоятельно рекомендую добавлять несколько команд, меняющих поведение Perl. Это две строки, так называемые прагмы, которые действуют подобно флагам компилятора в других языках:
Команда use говорит Perl, что нужно загрузить и использовать каждую прагму.
strict и warnings помогут вам отловить некоторые общие ошибки в коде, а иногда даже просто не дадут вам их сделать. Это очень удобно.
Чтение ввода
Теперь давайте ещё улучшим нашу программу: будем спрашивать у пользовательницы её имя, а затем выводить его на экран.
$name называется скалярной переменной, или просто: скаляр.
Переменные объявляются при помощи ключевого слова my. (По секрету заметим, что на самом деле это одно из требований, добавленных прагмой strict ).
Введите наш новый код и запустите его, нажав клавишу F5.
Он спросит имя. Введите его и нажмите ENTER, чтобы сообщить Perl об окончании ввода.
Избавляемся от переводов строк
Заключение
Задания
Попробуйте запустить следующий скрипт:
Он не выводит сообщение в одну строку. Почему? Как это исправить?
Задание №2
Напишите скрипт, который запрашивает у пользовательницы два числа, одно за другим. Затем выводит сумму этих двух чисел.
Что дальше
Следующая часть нашего учебника расскажет про редакторы, IDE и среду разработки для Perl.
Как запускать скрипты через консоль
Довольно часто мне задают вопрос о том, как запустить скрипт через консоль Windows. Многие запускают скрипты двойным кликом и не могут понять, почему скрипт прекращает свою работу. Поэтому решил написать небольшую инструкцию по запуску Perl-скриптов через консоль.
Как запустить консоль:
2. Ввести «cmd» и нажать Enter
Появится подобное окно
Как запустить скрипт:
Предположим, на диске C: есть директория script, и в ней лежит скрипт test.pl.
Для того, чтобы его запустить, требуется предварительно перейти в директорию со скриптом, набрав в консоли:
cd c:\script
и нажать Enter. На экране отобразится нечто подобное:
Теперь нужно ввести имя скрипта (test.pl) и нажать Enter:
Если скрипт не запустился, и консоль выдала подобный текст:
«test.pl» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
или
‘test.pl’ is not recognized as an internal or external command,
operable program or batch file.
То запускать придется так:
c:\perl\bin\perl.exe test.pl
Надеюсь, теперь мне перестанут задавать вопросы про консоль.
Как запускать скрипты через консоль: 16 комментариев
Ну тут ещё можно добавить что должен быть установлен ActivePerl 😉