Как запустить perl скрипт на windows

Обновлено: 06.07.2024


В настоящее время варианты PERL (так называемые "порты" (ports) ) существуют для многих разных машин и операционных систем, в том числе и для Windows 9x, и Windows NT. Искать их надо в первую очередь на сайте CPAN (Comprehensive Perl Archive Network) - www.cpan.org. Там же можно найти многочисленные модули, программы, документацию и другие материалы, отосящиеся к Perl. Порты perl для разных платформ находятся в разделе Browsing -> Perl binary distributions ("ports")

Для Windows платформ существуют две основных "линии" Perl - так сказать, "классическая" и от фирмы ActiveState (www.activestate.com). Фирма ActiveState выпускает "свои" порты Perl для Win32, средства для запуска Perl как ISAPI extension (ISAPI - это интерфейс серверных расширений веб-серверов Microsoft - PWS и IIS) и различные утилиты разработчика. Последние уже продаются за деньги (на сайте - демо-версии), в то время как PERL можно скачать и использовать бесплатно.

Существуют и другие, менее известные порты PERL для Win32.

Для работы нужен perl версии 5 или выше. Лично я уже 2 года пользуюсь Perl 5.003_07 от ActiveState. Узнать версию интерпретатора можно командой perl -v.

Установка Perl


Процесс установки Perl из дистрибутива не представляет собой ничего сложного. Программа установки создаст папку для Perl и подпапки в ней, разместит необходимые файлы, а также пропишет путь к файлу perl.exe в autoexec.bat, а также необходимые ключи реестра. Теперь Вы можете запустить Perl-скрипт, просто введя в командной строке:
perl .

Сразу после установки Perl Вы не сможете запускать CGI-скрипты через Ваш веб-сервер. Для того, чтобы это было возможно, надо "прописать" perl в установках веб-сервера как "script handler" (программа, поддержи- вающая скрипты). Как? Это зависит от веб-сервера.

Вообще, существует 2 типа CGI-скриптов: "бинарные" (откомпилированные в исполняемый код программы) и "интерпретируемые" - к которым относятся и Perl-скрипты. Важное отличие между ними заключается в том, что вторым нужен так называемый "script handler"-программа-интерпретатор, исполняющая скрипт. Для web-сервера perl.exe и является тем самым "script handler"-ом.

Установка поддержки Perl-скриптов в PWS и IIS


Нижеследующие рекомендации по установке Perl для IIS/PWS были опробованы на PWS в составе Windows95 OSR2.

В PWS и IIS данные о расширениях скриптов находятся в системном реестре Windows в разделе
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\parameters\Script Map

В частности, если Вы хотите, чтобы файлы с расширениями cgi и pl запускались как Perl-скрипты, Вам надо прописать следующие параметры в вышеуказанный раздел:


Если у Вас perl.exe установлен в каталог C:\Perl\bin\, то эти параметры будут иметь вид:


В тех папках web-сервера, где планируется размещать Perl-скрипты, должно быть разрешение на их исполнение (в PWS это настраивается через веб-интерфейс).

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

установка вместе с закачкой занимает 5-10 минут в зависимости от.

После установки со всеми умолчаниями( рекомендованный способ ):

А) появится папка C:\Perl

Б) папка с подкаталогами займёт место

100Мб; в дальнейшем может расти за счет установки доп. модулей;
модули лежат в простом текстовом виде, частью системы Windows не являются и могут быть просто удалены вместе с c:\perl, если perl больше не нужен

Г) В системной переменной PATH пропишется путь c:\perl\bin

Д) само приложение Perl является консольным приложением Windows, поэтому рекомендуется запускать его
в стандартном консольном окне cmd/bat

общий способ запуска такой:

c:\Users\User> perl file.pl аргументы
либо однострочником

c:\Users\User> perl -E " say 'Привет, пользователь. ' "

как было сказано в пункте В, если дополнительные ключи запуска не требуются, можно просто набрать file.pl
и скрипт выполнится

Е) Шрифт консольного окна(в свойствах окна) рекомендуется выставить TrueType Lucida Console полюбившегося размера,
а ширину окна и буфер пошире и поглубже, не скупитесь.

Ж) Если вдруг понадобятся дополнительные модули, то они добавляются с помощью команды

c:\Users\User> ppm install Net::Ftp
где Net::Ftp - пример имени модуля. сам модуль лежит на сайте ActiveState, поэтому интернет должен быть при установке модуля включен, в дальнейшем нет.
Возможны и другие способы, за справками по этому поводу, а также и по другим перл-поводам обращайтесь на ветку PERL форума

И) Задачи, которые можно автоматизированно решать с помощью Perl ( вкратце ):

1) Обработка текста ( нахождение строк, слов, замена, удаление, преобразование )
в том числе и Unicode ( UTF-8, UTF-16 ),
в том числе гипертекстовые XML, HTML - обработка тэгов,
в том числе XLS, XLSX(даже без наличия установленного Excel) , CSV,
в том чиле конфигурационные .INI
2) То же, но не для текстовых форм, а для бинарных
3) Манипуляции с файлами и каталогами ( поиск, копирование, переименование, чтение и замена атрибутов )
4) Системное администрирование( доступ к локальным пользователям, буферу обмена, AD, Реестру, NTFS );
Программирование по технологии Microsoft ActiveX ( как VBA )
5) Системное администрирование путём склеивания между собой консольных команд ОС Windows
6) Универсальный доступ к любым базам данных [MS SQL, Oracle]( через драйвера БД), создание своих систем хранения
7) Сетевой доступ FTP ( закачка, загрузка, манипулирование итд )
8) Сетевой терминальный доступ Telnet, SSH, программирование маршрутизаторов, коммутаторов, модемов
9) WWW-доступ, закачка страниц, сайтов, создание web-роботов
10) Web-программирование(сайты, интерфейсы, управление изображениями), создание Web-серверов(автономных или в связке с Apache, NGINX )
11) Общее сетевое программирование( сокеты, клиенты, серверы, сниферы, анализаторы трафика )
12) Почта ( отправка писем, прием писем, манипулирование почтовыми ящиками )
13) Математическое программирование ( матрицы, шифрование )
14) Создание графического пользовательского интерфейса GUI ( кроссплатформенного )

Язык Perl является кроссплатформенным, поэтому при аккуратном программировании
написанная программа будет работать одинаково на Windows, Linux, Mac OS X, Solaris, AIX, OpenVMS, a также мобильных телефонах Android

Довольно часто мне задают вопрос о том, как запустить скрипт через консоль Windows. Многие запускают скрипты двойным кликом и не могут понять, почему скрипт прекращает свою работу. Поэтому решил написать небольшую инструкцию по запуску Perl-скриптов через консоль.

Как запустить консоль:


2. Ввести "cmd" и нажать Enter


Появится подобное окно



Консоль поддерживает множество команд - ntcmds

Однако, для того, чтобы запустить скрипт, достаточно уметь пользоваться одной - cd.

Как запустить скрипт:

Предположим, на диске 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



c:\perl\bin\perl.exe - путь до интерпретатора Perl, test.pl - запускаемый скрипт. Естественно, у вас в системе должен стоять ActivePerl или какой-нибудь другой интерпретатор.

Надеюсь, теперь мне перестанут задавать вопросы про консоль.

Как запускать скрипты через консоль: 16 комментариев

Ну тут ещё можно добавить что должен быть установлен ActivePerl ;)

Упс. Сорри, пропустил последний абзац.

жги ещё!
> следующая статья - "как запускать пхп скрипты через консоль"


Kaimi :

Окей, постараюсь. Главное чтобы мне перестали задавать подобные вопросы. grep подсказывает, что на данный момент мне этот вопрос задавали более 40 раз

Каими все равно молодец :)

кайми,а не проще создать в папке со скриптом bat файл и вписать в нем cmd, после этого он сразу сам путь выводит, а то вечно с путями голяк)


Kaimi :

В последних скриптах у меня практически всегда лежит такой файл в папке со скриптом, только никто не догадывается им пользоваться. Не наблюдал проблем с путями, всегда ведь можно набрать часть названия директории и нажать tab

не все это опять же знают, но все равно молодец что такое написал. Я этого тоже когда то не знал.

А что касается путей,когда у тебя русская винда и ты распаковываешь куда-нить в мои документы-руками путь геморно набрать))

В ней вы узнаете, как установить 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 (англ.).

Первая программа

Ваша первая программа будет выглядеть, например, так:

Рассмотрим её шаг за шагом.

Hello world

Как только вы установили DWIM Perl, вы можете нажать на "Пуск -> Все программы -> DWIM Perl -> Padre", откроется редактор с пустым новым файлом.

Как вы, наверное, заметили, команды в Perl заканчиваются точкой с запятой ; . Знак \n используется для обозначения перевода строки. Строки заключены в двойные кавычки " . Функция print печатает текст на экран. В результате выполнения этого кода Perl выведет на экран текст, заканчивающийся переводом строки.

Сохраните файл как hello.pl, чтобы затем вы запустить его командой "Run -> Run Script". Появится новое окно с результатами работы программы.

Готово, вы писали ваш первый Perl-скрипт.

Теперь давайте его немного усовершенствуем.

Perl в командной строке для тех, кто не пользуется Padre

Если вы не используете Padre или другую IDE, вы не сможете запустить скрипт прямо из редактора. По крайней мере, по умолчанию. Нужно будет открыть shell (или cmd в Windows), перейти в каталог, где вы сохранили hello.pl и набрать команду:

Так Perl-скрипты запускаются из командной строки.

say() вместо print()

Давайте немного улучшим наш однострочный Perl-скрипт:

Для начала нужно указать минимальную версию Perl, которую мы хотели бы использовать:

Теперь можете запустить скрипт еще раз, выбрав в меню "Run -> Run Script", или нажав клавишу F5. Перед запуском файл будет автоматически сохранен.

В целом, указание минимальной требуемой версии Perl является хорошей практикой.

В нашем случае это добавляет в Perl также несколько новых функций, в том числе оператор say() . say похож на print , но короче, и автоматически добавляет в конце символ перевода строки.

Вы можете переписать ваш код так:

Мы заменили print на say и убрали \n с конца строки.

Сейчас вы скорее всего используете Perl версии 5.12.3 или 5.14. Большинство современных Linux-дистрибутивов версии поставляются с Perl 5.10 или более поздней версии.

К сожалению, кое-где ещё работают старые версии Perl. В них нет оператора say() , и, кроме того, могут потребоваться некоторые другие изменения в примерах, которые мы рассмотрим позднее. В дальнейшем я буду отмечать, если используются возможности версии 5.10.

"Ремни безопасности"

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

Команда use говорит Perl, что нужно загрузить и использовать каждую прагму.

strict и warnings помогут вам отловить некоторые общие ошибки в коде, а иногда даже просто не дадут вам их сделать. Это очень удобно.

Чтение ввода

Теперь давайте ещё улучшим нашу программу: будем спрашивать у пользовательницы её имя, а затем выводить его на экран.

$name называется скалярной переменной, или просто: скаляр.

Переменные объявляются при помощи ключевого слова my. (По секрету заметим, что на самом деле это одно из требований, добавленных прагмой strict ).

Скалярные переменные всегда начинаются со знака доллара: $ . <STDIN> это инструмент для чтения строки с клавиатуры.

Введите наш новый код и запустите его, нажав клавишу F5.

Он спросит имя. Введите его и нажмите ENTER, чтобы сообщить Perl об окончании ввода.

Обратите внимание, что вывод нашей программы слегка кривой: запятая после имени появляется на новой строке. Это произошло потому, что ENTER, который вы нажали после ввода имени, попал в переменную $name .

Избавляемся от переводов строк

Это настолько распространенная в Perl задача, что есть специальная функция chomp , которая удаляет концевой перенос строки.

Заключение

Задания

Я обещал задания.

Попробуйте запустить следующий скрипт:

Задание №2

Напишите скрипт, который запрашивает у пользовательницы два числа, одно за другим. Затем выводит сумму этих двух чисел.

Что дальше

Следующая часть нашего учебника расскажет про редакторы, IDE и среду разработки для Perl.

Рассмотрим базовые принципы Perl, популярного языка для написания CGI скриптов - программ, которые взаимодействуют с веб сервером для создания большей динамичности веб страниц.

Для многих задач разработчики используют более современные альтернативы, такие как PHP - которые включают некоторые функции, взятые из Perl - но Perl все равно лучше для освоения базовых навыков создания CGI скриптов.

Базовые принципы

Perl - язык-интерпретатор (как PHP), и он не "строго типизированный", что означает, что вам не обязательно объявлять переменную, перед тем как её использовать, и указывать какого она типа. Вы можете написать что-то вроде этого:

Как вы видите, каждое выражение заканчивается точкой с запятой, строка заключается в апострофы.

Одна из первых вещей, которые необходимо запомнить, как и в некоторых других языках, это то, что важен тип кавычек; если вы используете одиночные кавычки (апострофы), то выражение внутри трактуется как строка текста; если вы используете двойные кавычки, то в выражении можно использовать специальные символы и переменные. Например, напишем следующий код:

В результате будет выведена строка "$a\n’"

Если использовать код

Всегда проверяйте правильность строк внутри двойных кавычек.

Как запустить скрипт? Если вы хотите провести простой тест - используйте Perl интерактивно: откройте командное окно и наберите perl (в Windows, вам возможно придется добавить путь к файлу perl.exe).

Теперь набирайте строчки скрипта. В конце добавьте пустую строку и затем нажмите Ctrl & D. Обычно нужно сделать что-нибудь более сложное, для этого напишите свой скрипт в текстовый файл и сохраните его с расширением .pl. Затем запустите его, выполнив команду

Блоки и циклы

Программирование, как правило, включает блоки данных или команд, которые используются внутри циклов, и Perl не является исключением. Фактически он был спроектирован для работы с текстовыми файлами, то есть читает информацию находящуюся внутри них или со стандартного ввода (набор на клавиатуре) или из списка файлов в командной строке. Вот простой пример скрипта:

Сохраните файл как test.pl и запустите его используя следующую команду:

Второй test.pl можно заменить именем любого другого текстового файла. Взглянув на скрипт, можно увидеть блоки команд в цикле, заключенные в фигурные скобки.

Для задания условий в цикл while используются значки <>. Специальное указание "<>" означает что используется стандартный ввод, а специальная переменная "$_" означает текущую строку ввода. Таким образом, скрипт читает строку со стандартного ввода и выводит её. Если вы просто наберете perl test.pl, он будет ожидать пока вы наберете какую-нибудь строку и затем выведет её, и так будет продолжаться пока вы не нажмете Ctrl & D, что будет означать конец скрипта.

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

" сравнивает совпадают ли переменные, а оператор "!

" проверяет несовпадение. Добавть в конец скрипта следующий строки и запустите его командой perl test.pl test.pl:

Практическое приложение

Теперь нас есть простой скрипт, который ищет в файле слово "Fred", но для чего мы можем его использовать?

Например, его легко встроить в какой-нибудь полезный CGI скрипт, скажем, для поиска строки в таблице данных.

Очень часто, на простых вебсайтах работа с базами данных уже реализована. Но если у вас уже есть данные в формате Excel или похожем, вы можете сохранить их формате CSV (Comma Separate Values - данные разделенные запятой), или другом текстовом формате.

Затем вы загружаете их на ваш веб-сайт, используете простой Perl скрипт для извлечения строк в зависимости от запроса пользователя - для этого мы используем наш пример.

Давайте используем некоторые данные: составим простую таблицу с контактными номерами телефонов. Она будет содержать имя человека, и два номера.

Сохраним файл в формате CSV, и загрузим его на сервер в ту же директорию, в которой будет наш скрипт. Мы создадим скрипт для извлечения строки, содержащей данные человека, которого необходимо найти. Скрипт в конце содержит полный код.

Сначала мы посылаем заголовок, чтобы сказать веб браузеру, что передается простой текст; как и в других заголовках, это необходимо сделать c новой строки, и затем добавить пустую строку, показывающую конец заголовка и начало содержимого веб страницы.

Затем команда open читает файл, расположенный в той же директории, что и скрипт, CSV файл, который мы создали в Excel; в качестве идентификатора файла используется имя "CONTACTS". Его мы будем использовать в цикле while для чтения файла. Поскольку все данные разделены запятой, мы можем записать их в различные переменные.

Первая команда next if нужна для пропуска следующей итерации цикла; мы убеждаемся, что не выведем строку, содержащую заголовок, который Excel добавляет в CSV файл. Вторая команда используется для нескольких вещей; здесь есть сравнение, с которым мы знакомились раньше, но в конце используется маленькая буква i, которая заставляет Perl игнорировать блок.

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

Они выделяются фигурными скобками, а специальный массив $ENV содержит переменные окружения, которые содержат информацию о веб сервере, как части CGI системы. Переменная, которая нас интересует - QUERY_STRING, которая содержит часть адреса, стоящую после знака вопроса.

Эта часть проверяется на совпадение и пропускаются все строки, кроме совпадающих, скрипт завершает работу, выдав все контакты, которые найдет.

Теперь все, что вам нужно делать - это время от времени обновлять данные. В будущем, вы можете изменить тип данных на text/html и использовать HTML тэги в командах вывода. Или вы можете создавать временные файлы и затем использовать команды Perl для поиска и замены, и записать данные в эти временные файлы для дальнейшего использования.

Читайте также: