perl скрипт что это
Perl скрипт что это
Давайте разберем подробнее скрипт, который мы использовали для проверки работы Perl:
Обратим внимание на то, что каждая строка (кроме первой) должна заканчиваться точкой с запятой (;)
|
Она заставляет веб-сервер искать Perl-интерпретатор perl.exe в директории C:\USR\bin\. Строка может варьироваться в зависимости от того, где у вас расположен интерпретатор Perl.
Если вы указали путь неправильно, Apache выдаст непонятное сообщение об ошибке, а в errors.log появится сообщение: «couldn’t spawn child process». В этом случае проверьте первую строку в скрипте.
|
Попробуйте убрать из Perl-скрипта, предназначенного для вывода веб-страницы на браузер, строку:
print «Content-type: text/html\n\n»;
Почему Perl требует, чтобы эта строка предшествовала выводу информации на браузер? Попробуем разобраться, воспользовавшись бесплатной утилитой HttpRevealer. Эта небольшая программа для веб-разработчиков позволяет увидеть диалог между браузером и веб-сервером.
Установим эту программу и введем в браузер адрес сайта, например, http://dmoz.org/.
Как только вы нажмете «Enter», ваш браузер подключится к серверу (в данном случае, это dmoz.org.) и запросит главную страницу сайта. Получив запрос браузера, веб-сервер отвечает ему, возвращая главную страницу сайта. Просто, да?
Создается впечатление, что браузер и веб-сервер разговаривают друг с другом? Так и есть! Они говорят так же, как это делаем мы. Но разговаривают они не на человеческом языке, а на языке команд HTTP-протокола.
Давайте посмотрим, что они «говорят»:
Выше приведен скриншот HttpRevealer. Верхняя панель отображает запрос браузера, а нижняя панель показывает ответ веб-сервера.
Не пугайтесь незнакомых слов. Сейчас мы все объясним. Если вы посмотрите на первую строку HTTP-запроса в верхней панели, то увидите:
GET / HTTP/1.0 |
По-русски это означет: «Эй, господин веб-сервер, я пришёл, чтобы получить документ, расположенный в корневом каталоге вашего сайта. Я общаюсь с вами по HTTP-протоколу версии 1.0». «.
Теперь, посмотрите, что отвечает веб-сервер:
HTTP/1.1 200 OK . Content-Type: text/html Вот так все просто! Но не стоит забывать, что мы смотрим этот диалог для того, чтобы выяснить, почему Perl требует наличия в скрипте строки «print Content-type», для того, чтобы он работал правильно. Perl и CGI-программы – особенности использованияРазработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies. Что такое CGI и PERLВажно понимать, что CGI – не язык программирования, а протокол передачи данных веб-серверу через stdin и их прием из stdout. В качестве обработчика команд используется любая программа с поддержкой функций потокового ввода-вывода. Например, написанная на языке Perl. Главное, что от скрипта требуется «умение» заполнять таблицы в базе данных и получать данные из них путем подачи запроса, чего никогда не сделать средствами HTML. Особенности применения языка Perl: В качестве альтернативы Perl все чаще применяется язык программирования Python, но администраторы «старой закалки» продолжают придерживаться классики создания CGI-скриптов, так как поддержка Perl «по умолчанию» имеется в большинстве дистрибутивов Linux. Поэтому программы на нем начинают работать без предварительной подготовки сервера. Формально же скрипты можно писать на чем угодно – хоть на C/C++, Pascal, Java или Visual Basic. Использование готовых скриптовЕсли CGI-скрипт уже готов (используется стандартный модуль), перед использованием его нужно скопировать на сервер хостинга. Выполняется процедура при помощи файлового менеджера в панели управления или через FTP-доступ, например программой FileZilla. Выбор расположения остается на усмотрение пользователя; к программе можно обращаться независимо от имени каталога или подкаталога, но рекомендуется придерживаться определенных стандартов. Так, внутри скриптов обязательно указывается путь к интерпретатору используемой платформы для программирования: Если здесь допустить ошибку, программный код исполнятся не будет. То же происходит, если в ПО предусмотрено обращение к базе данных MySQL – пользователю понадобится внести в программу путь к ней, логин и пароль доступа. При изменении последнего корректировка CGI-скрипта обязательна, иначе он перестанет работать. Местоположение файлов в популярных CMS выясняется в службе технической поддержки или в служебной документации. Написание простейшего CGI-скриптаПри работе в среде операционной системы Windows для написания кода понадобится специальная программа. Например, подойдет специализированный текстовый редактор Notepad++ (стандартный Блокнот для таких целей не подходит). Сам код строится вокруг переменных окружения и потоков ввода-вывода информации. По сути, CGI-скрипты являются обработчиками отдельных команд и не являются «полноценной» программой. Главное, избегать использования SHELL, который снижает безопасность сайта. В качестве примера простейшего CGI-скрипта приведем код для вывода текущей даты и команду HTML, при помощи которой будет происходить обращение к программе (из любой части страницы, хоть в нескольких местах одновременно). При помощи специального виджета, установленного в CMS, или путем ручного редактирования шаблона в нужный участок HTML вставляется код: В приведенном примере решена типовая ошибка новичков. Она заключается в отсутствии метки о типе выводимого результата (строка Content-type: text/html). После нее располагается пустая строка для указания, что следом идет непосредственно программный код. Просмотр установленных модулей PERLПроверить ранее подключенные PERL-модули можно командой vim. Перед ее вводом необходимо подключиться к серверу хостинга по защищенному каналу SSH. После авторизации нужно ввести в консоли: В результате будет создан файл с указанным названием. Следующий шаг – открыть его в текстовом редакторе и изменить содержимое на следующий код: Mini-FAQ по Perl (Частые вопросы, ЧаВо)Меня часто спрашивают, как я учил Perl — какие книги читал, какие сайты посещал и так далее. Многие считают, что Perl имеет сложный синтаксис, и потому не хотят или бояться его учить. В этом FAQ я хотел бы поделиться своим мнением относительно языка Perl. Я слышал, что Perl — устаревший язык и сейчас на нем никто не пишет. Так ли это? Относительно возраста языка — Perl был создан в 1986 году и с тех пор активно развивался и изменялся. В настоящее время Perl поддерживает модульное и объектно-ориентированное программирование, регулярные выражения и т.д. — в общем, идет в ногу со временем. Объявления о имеющейся вакансии Perl-программиста появляются с большой частотой, при этом уровень заработной платы, как правило, ощутимо выше, чем у программистов на Си или Java. Впрочем, к моменту, когда вы будете читать эти строки, ситуация могла и измениться, так что лучше проведите собственное исследование в этом направлении, посетив, к примеру, rabota.ru. Я слышал, что синтаксис Perl неописуемо сложен. Так ли это? my @arr = («aaa», «bbb», «ccc»); или более простым способом — без запятых и кавычек: my @arr = qw/aaa bbb ccc/; Если вас интересуют конкретные примеры, в которых код на Perl оказывается короче, чем на каком-нибудь PHP, я позволю себе отослать вас к моему блогу, а точнее — к записи Интересные примеры на Perl. Особое внимание обратите на операторы grep и sort, подумайте, сколько кода занял бы аналогичный код на PHP. С чего начать изучение Perl? Тем не менее могу порекомендовать несколько хороших книг — это «Изучаем Perl» и «Perl: изучаем глубже», авторы — Шварц Р. и Феникс Т. Недавно эти книги были переизданы, так что в них вы найдете самый легкую для усвоения и актуальную информацию о программировании на Perl. Настоятельно не рекомендую брать какие-либо другие книги, поскольку написанное в них зачастую уже давно потеряло актуальность (если книжка, скажем 2006-го года — помните, что Perl активно развивается) или в ней написано 1000 страниц ни о чем. Если у вас возникнут вопросы относительно программирования на Perl, вы можете попросить совета на программерских форумах (например, vingrad.ru) или в жж-сообществе ru_perl. Я не хочу устанавливать UNIX только ради этого вашего Perl! Уж больно все хорошо и замечательно. А как же ложка дегтя? Во-первых, в любом языке работает так называемый закон «водяного матраца». Если вкратце, он означает что язык может быть либо простым в изучении, но программы на нем будут состоять из большого числа строк (как в случае с PHP), либо сложным в изучении, но позволяющем писать меньше кода (это как раз наш случай). Во-вторых, Perl подходит не для всяких задач. Если от вас требуется написать программу, которая должна работать быстро (графический редактор, 3D игру), Perl вам не подойдет. Как и любой другой скриптовый язык. Аналогично я не стал бы писать на Perl драйверы. В-третьих, хоть Perl на мой взгляд и не сложен в изучении, но оно, это самое изучение, занимает больше времени, чем в случае с другим языком. Для сравнения, PHP я освоил буквально за пару ночей — переменные, циклы, классы — тут знать то нечего. Начать писать на Perl можно за тот же промежуток времени, но чтобы хорошо в нем разобраться, мне лично потребовалось несколько месяцев. А минус за ненависть к PHP не желаете? Не стоит недооценивать PHP, ведь благодаря ему появились такие мощные CMS, как Drupal и Joomla. Аналогичных проектов на Perl мне не известно, если не считать аналога WordPress — Movable Type. Последний, к слову, пользуется большой популярностью за рубежом. 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; Ещё есть unless — то же самое, что ЕСЛИ, только наоборот: unless($a == 0) < Циклы. То же самое, как и везде: Или можно сделать как в PHP: Циклы с пред- и постусловием. Если вы знаете хотя бы Pascal, то вы знаете и циклы на Perl: Операторы присваивания и математические операторы. В этом плане Perl очень похож на любой C-подобный язык и использует те же самые команды: Применение на практикеPerl — мощный язык для работы с текстом и любыми символьными данными. На нём легко писать программы, которые автоматизируют работу с компьютером, выполняют рутинные операции или преобразуют одни данные в другие. Например, эта команда заменит все упоминания слова Java на слово Perl в файле resume.txt, и одновременно сделает резервную копию оригинального файла. А эта — удаляет все повторяющиеся элементы массива: Если нужно очистить файл от всех HTML-команд, можно использовать такой код: use strict; Иногда это всё-таки сложноИногда готовый код на Perl сложно понять и прочитать. Это из-за того, что Perl — очень гибкий язык программирования с полной поддержкой регулярных выражений. Чтобы понять, что делают некоторые программы и функции, недостаточно просто посмотреть на них — нужно понимать правила преобразования регулярных выражений и знать, как одни команды в регулярках влияют на другие. Самый популярный пример такого кода: ❌❌❌ И этот код тоже не запускайте — можно легко стереть все свои данные и повредить файловую систему. Не все программы на Perl выглядят как эта, но без понимания того, как работают регулярные выражения, понять код бывает очень сложно. Вывод: регулярные выражения — это сила. Убедились в этом в очередной раз. Если ещё не убедились — почитайте, как с их помощью можно настроить автозамену нецензурной лексики на благопристойные выражения. Что пишут на PerlЕсли коротко: всё, где нужно автоматизировать работу компьютера или преобразование данных, можно написать на Perl. Системное программирование. Сюда можно отнести работу с учётными записями пользователей в сетях любой сложности и конфигурации, администрирование сетей и пользователей в организации. Ещё Perl используют для автоматизации рутины — наладить резервное копирование по расписанию, отправку писем с ежедневными отчётами, сбор, обработку и анализ разных данных. CGI-скрипты — любые скрипты для обмена данными между сервером и клиентом. Для Perl неважно, в каком виде данные выходят и поступают обратно, — он переведёт их в нужный вид и отправит из одного сервиса в другой. Объединение сервисов или программ. Если у вас есть две программы, одна из которых выдаёт готовый результат в одном формате, а другой он требуется в другом формате, то Perl поможет вам их соединить. Работает это так: вы пишете скрипт, который запускает первую программу, получает оттуда данные, преобразует их в нужный вид и отправляет во вторую программу. В итоге всё это работает как одно целое. Востребован ли Perl сейчасPerl востребован, потому что в мире накопилось много старого кода, который нужно поддерживать. Дело в том, что программы на Perl работают стабильно, предсказуемо и без сбоёв, а с 1987 года их написано очень много. Но порог входа в этот язык довольно высок — нужно обладать навыками хотя бы на уровне мидла, чтобы быть востребованным специалистом. С чего начатьПочитать: учебник по Perl для новичков. Перевод иногда хромает, но это лучший вариант для тех, кто только начинает изучение языка. Если знаете английский — начните с официальной страницы языка. Посмотреть: Perl Tutorial или Great Perl Tutorial For Begginers. Тут уже всё на английском, зато более наглядно. Бумажная книга: Изучаем Perl Рэндала Шварца и Тома Феникса. Для тех, кто любит основательно подойти к процессу и не любит читать с экрана. Perl скрипт что этоPerl является интерпретируемым языком, созданным программистом Лари Уоллом (Larry Wall) для обработки больших текстов и файлов и расшифровывается, как Practical Extraction and Report Language (язык для практического извлечения данных и составления отчетов). С помощью Perl вы, например, можете создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты. Как Perl обрабатывает данные из формНекоторые из этих примеров рассматриваются в нашем уроке. Как генерируются web-страницы «на лету»Эта возможность обеспечивает истинную интерактивность вашего узла. Такие скрипты позволят web-серверу автоматически реагировать на определенный набор запросов пользователя, предоставляя данные в требуемом пользователем виде. В чем различие между программой и скриптом?Перед началом работы с Perl необходимо понять разницу между программой и скриптом. Оба из них используют набор инструкций для выполнения определенного задания, но программа скомпилирована в эффективный двоичный формат, что позволяет ей быстро выполняться на определенной платформе, в то время как скрипт хранится в оригинальном текстовом формате. За счет того, что скрипты значительно короче программ, они выполняются тоже достаточно быстро. За счет того, что скрипт не надо компилировать перед запуском он становится замечательным средством для быстрого создания и внесения исправлений в разработку интерактивных частей узла. Альтернативы PerlНесмотря на это Perl на сегодняшний день является наиболее простым и быстрым и в тоже время очень мощным средством придания интерактивности вашему узлу. Что вам требуется, чтобы запустить PerlГде взять PerlЭтапы создания скриптаСохраните файл на диске. Предложенный ниже скрипт берет введенные данные, сохраняет их в файле и показывает сообщение, содержащее ссылку на файл с сохраненным именем. Наберите в редакторе текст программы и сохраните в файле testform.pl в каталоге cgi-bin вашего web-сервера. Убедитесь, что первая строка программы содержит правильный путь к программе-интерпретатору (для определения местоположения программы на UNIX воспользуйтесь командой which perl, под Windows выполните поиск файла perl.exe). Убедитесь также, что путь к выходному файлу является корректным путем к области хранения документов web-сервера. В заключение исправьте URL на адрес вашего сервера. Если в скрипте содержатся ошибки, то вы увидите сообщение типа В этом случае проверьте текст около указанной строки. Помните, что причина ошибки может быть выше на несколько, иногда достаточно много строк. Исправленный скрипт сохраните, и тестируйте так до тех пор, пока он не выдаст корректных выходных данных: Спасибо, что заполнили форму Далее мы рассмотрим четыре части созданного нами скрипта более внимательно. Обсуждение: Настройка скриптаКак уже было сказано, первая часть скрипта содержит настройки, включающие в себя несколько элементов. Первая строка определяет путь к программе-интерпретатору: Также в начале скрипта вы, для удобства, можете разместить комментарий о том, для чего предназначен этот скрипт. Комментарии могут располагаться в любом месте программы и начинаются с символа #: Также хорошей манерой является определение в начале скрипта всех констант и глобальных переменных. (Советую все пути прописывать в виде переменных, особенно если программа содержит более 50 строк, для удобства изменения местоположения файлов). Например: Все строки программы кроме первой и комментариев должны заканчиваться на «;». Обсуждение: Чтение данных из формыТеперь необходимо «считать» введенные пользователем данные в переменные Perl. После того как пользователь нажмет кнопку Submit в форме браузер посылает серверу имя скрипта и данные, взятые из формы. Данные передаются скрипту на стандартный вход. Предположим, что форма содержит следующие поля: |