ActivePerl-5.8.8.824
Браузеры


Perl - универсальный язык программирования.
ActivePerl-5.8.9.826

Perl - (Practical Extraction and Report Language - Язык Практического Извлечения данных и составления Отчетов) - универсальный язык программирования, первоначально разработанный для работы с текстом и, в настоящее время, используемый для широкого диапазона задач, включая системное администрирование, программирование и развития сети, развития графического интерфейса пользователя, и выполнения многих других задач. Язык предназначен для эффективного практического применения. Его главные особенности - удобство использования, поддержка процедурного и объектно ориентированного программирования (ООП), мощная встроенная поддержка обработки текста, большой набор функций, операторов, возможность работы с ассоциативные массивами, преобразованием типов, поддержка операций с файлами и базами данных и одна из самых внушительных совокупностей сторонних модулей. Вся работа с базами данных производится через интерфейс DBI, позволяющий программам быть в значительной степени независимыми от основных механизмов работы с ними. Всё это предоставляет разработчикам большие возможности для создания лаконичного и эффективного программного кода. Отличительная особенность программ написанных на Perl - высокая переносимость.
С момента появления языка Perl - первая версия была написана в 1986 году Ларри Уоллом - создано и используется около 120 000 скриптов. Perl первоначально предназначался для создания и обработки конфигурационных файлов, применяемых для настройки операционных систем базирующихся на UNIX и автоматизации составления отчетов по использованию ресурсов OS. OS UNIX настраивается с помощью текстовых файлов содержащих команды интерпретатора командной строки - shell, одной из сервисных программ (утилит) UNIX. Это то-же самое, что и командные файлы операционной системы MS- DOS. Использование командных файлов вызвано тем, что для решения ряда задач, требуется определенная последовательность ввода команд. Можно вводить их вручную, но рациональнее, один раз написав пакетный файл, в дальнейшем выполнять их автоматически. В UNIX они получили название - скрипт (script) или сценарий. C развитием Интернета, Perl стал одним из средств для разработки CGI-сценариев, служащих для обработки данных из форм, создания интерактивных приложений, управления базами данных, отправкой почтовых сообщений, создания счетчиков посещений, гостевых книг, форумов и решения иных задач. То есть используется для написания CGI приложений для Веб- серверов, имеющих встроенные механизмы включения скриптов, например, таких как Apache и MS IIS.
Perl - является интерпретируемым языком. То есть скрипт написанный на языке Perl, не является исполняемой программой содержащей описания данных и алгоритмы решения задачи переведенные в инструкции на машинных кодах. Поэтому, для его выполнения требуется интерпретатор, переводящий инструкции Perl из текстового формата в двоичный и, затем, выполняющих их на стороне сервера.
Транслятор, компилятор, интерпретатор.
Коротко о классификации языков программирования.
Все языки программирования, за исключением
машинного, в конечном итоге транслируют исходный код программы
в машинные коды.
Трансляторы
Существуют два вида трансляторов: компиляторы и интерпретаторы (языки-компиляторы и языки-интерпретаторы).
Компилятор
Компилятор - язык-компилятор, например, BC++ 5.x - переводит исходный код программы, содержащий описания данных и алгоритмы решения задач, в инструкции на машинных кодах (компилирует). Затем, при помощи редактора связей (Link), компонует проект, создавая загрузочный (исполняемый) файл. Загрузочный файл (обычно имеющий расширение - .exe.) - принято называть программой. Полученная программа (если был выбран режим компиляции - static) содержит все необходимое для своей автономной работы на определенной OS (операционной системе) и больше не нуждается в среде разработки, компиляторе, редакторе связей. Её можно перенести и выполнить на другом компьютере, на котором никогда не устанавливался программный комплекс, при помощи которого данное приложение создавалось. Если размер программы превышает 1 - 3 мегабайта - часть подпрограмм выносятся в файлы динамически связанных библиотек (DLL) - имеющие расширение - .dll, которые загружаются в память по мере необходимости и всего лишь один раз. Исполняемые программы, если в них имеются проверки и защиты от изменения части кода, размера или сжатые компрессором - дешифрировать практически невозможно. Встроенная проверка пароля - позволяет оградить от несанкционированного доступа. Для создания программ, например, в Borland C++ -компиляторе для Windows, используется интегрированная среда разработки (IDE - Integrated Davelopment Environment). Она предоставляет собой универсальный и удобный инструмент для разработки, анализа и отладки программ. Имея только этот программный комплекс, можно создавать профессиональные 32-разрядные приложения для всех версий Windows.
Интерпретатор
Интерпретатор - язык-интерпретатор - при обращении к нему программы написанной на этом языке, считывает её текст, переводит его в машинные коды, загружает в память и запускает на исполнение. После выхода из программы она так и остается в виде текстового файла с открытым исходным кодом. При каждом следующем обращении к программе, написанной на языке-интерпретаторе - весь процесс повторяется заново. То есть, для выполнения этой программы необходимо присутствие интерпретатора на компьютере. Программы, написанные на языках-интерпретаторах защитить невозможно. Поэтому они имеют ограниченное применение, так как, по неосторожности, можно легко разрушить код программы. А любой имеющий начальные познания в этих языках, может внести нужные ему изменения в алгоритмы вычисления. Работать с данными приложениями могут только подготовленные пользователи.
Основное отличие компиляторов и интерпретаторов.
Компилятор создает исполняемую программу, не нуждающуюся в других программных средствах (кроме OS).
Интерпретатор создает программу, время существования которой заканчивается по завершению выполнения или с выходом из неё. Для работы программы необходима программа-интерпретатор, в данном случае Perl, для выполнение в котором она создана.
Документация Perl.
Трудно найти описание,
на русском языке, последних версий Perl в Интернете,
поэтому лучше воспользоваться обширной документацией
разработчиков - "ActivePer - Руководство пользователя" -
входящей в пакет инсталляции
- ActivePerl-5.8.8.824-MSWin32-x86-267479.msi.
В котором лаконично, с множеством примеров, освещены
практически все вопросы по установке, конфигурации,
компонентам, модулям расширения и особенностям новой
версии языка.
Обратиться к документации, после установки
Perl в каталог - c:\usr\ , можно будет,
набрав в командной строке Total Commander'а - C:\usr\html\index.html или
из меню - 'Скрипты на Perl - 'Документация Perl' -
переписав и установив шаблон главного
сайта сервера Apache 2.2.14

Каталог установки Perl - c:\usr\ - выбран потому, что первая строка Perl-скриптов - #!/usr/bin/perl - должна указывать на путь к интерпретатору Perl, на большинстве реальных серверов хостинг-провайдеров - это c:\usr\. Кроме этого она сообщает интерпретатору о том, что это скрипт, написанный на языке Perl.
Perl скрипты - что необходимо для их создания, отладки и включения в страницы сайта ?
Уже упоминалось, что Perl - язык сценариев (скриптовый язык), широко используемый для системного администрирования и программирования веб-приложений. Perl скрипты (выполняются на сервере) и могут быть вызваны непосредственно или из файлов сайта. Но как - бы они не были вызваны, пользователю результат их выполнения будет отправлен включенным в страницы HTML. Поэтому, для того чтобы четко представлять как это происходит на реальном сервере, необходимо на домашний компьютер установить локальный сервер Apache 2.2.14
Установить сервер Apache.
После внесения изменений в файлы конфигурации сервера Apache, необходимо проверить правильность его установки. Сделать это можно переписав и установив на ваш компьютер шаблоны - главного сайта сервера Apache и сайтов виртуальных хостов.
Установить интерпретатор Perl
Чтобы иметь возможность проверки выполнения скриптов на Perl, из страниц сайта (например, главного сайта сервера Apache - 'perl скрипты'), нужно установить интерпретатор ActivePerl. Его можно бесплатно получить на сайте производителя ActiveState.com/ActivePerl. скачать perl можно нажав на ссылки ниже
Текущие версии: ActivePerl-5.8.9.826 - версия языка Perl 5.8, ActivePerl 5.6.1.638 - версия языка Perl 5.6. Если вы установите ActivePerl 5.6.1.638, то возникнут проблемы с использованием редактора - OptiPer(интегрированной среда разработки для создания, отладки и проверки выполнения perl сценариев, непосредственно или через связанные документы html.)
Следует напомнить, что ActivePerl-5.8.8.824 это совсем не тот Perl, примеры скриптов на котором, написанные до 2006 года, во множестве встречаются на сайтах Интернета. Неактуально сейчас звучат, в многочисленных материалах посвященных языку Perl, разъяснения, рекомендации и советы. Некоторые из них даже вредны, так как приводят к ошибкам и поддерживают миф о почти непреодолимых проблемах с которыми придется встретиться начинающим программировать на Perl (Например, ошибка 500). Подробней см. ниже. Количество условий, несоблюдение которых, при создании и размещении скриптов на Perl, приводит к получению 500-й ошибки (Internal Server Error - внутренняя ошибка сервера), не более чем при разработке страниц сайта на языке разметки гипертекстовых документов — HTML (HyperText Markup Language).
Объединим проверку правильности установки и работоспособности интерпретатора Perl с современными приемами тестирования perl-скриптов.
Для проверки работоспособности интерпретатора Perl, создайте файлы с таким содержанием:
Командный файл, направляющий вывод из Perl скрипта в файл -
testcod.cmd
rem Командный файл, направляющий вывод из Perl скрипта в файл - testcod.htm
perl testcod.cgi > testcod.htm
Perl скрипт - testcod.cgi
use CGI qw(:all);
print header;
print "<b> Вывод из скрипта - testcod.cgi";
print "</b>";
use CGI qw(:all);
print header;
print "<b> Вывод из скрипта - testcod.cgi"
print "</b>";

Запустив который вы увидите:
Вывод из скрипта - testcod.cgi

Из - за синтаксической ошибки скрипт не будет выполнен.
- вы не увидите.
В ранних
версиях Perl-скрипты имели неприятную особенность
- запись предупреждающих сообщений в файлы регистрации
ошибок, без указания времени, места и полностью
идентифицированной причины её вызвавшей. Нельзя
исключать появление ошибок, даже в отлаженном
и протестированном скрипте. Если у вас на сервере
несколько скриптов, то поиски вызвавшего ошибку,
могут занять значительное время.
В последних версиях Perl имеется несколько директив
позволяющих избавиться от этой проблемы. А так
как появление ошибок возможно по причинам, которые,
без определенного опыта, не все могут учесть,
то обязательно включайте в скрипты, для получения
полной информации в файле регистрации ошибок,
вместо обычной директивы - use Carp, директиву - use
CGI::Carp.
Директива - use CGI::Carp 'fatalsToBrowser' -
позволяет перенаправить сообщение об ошибке в
вывод скрипта, вместо log-файла web-сервера.
Пример Perl-скрипта для тестирования сервера Apache и ActivePerl-5.8.8.824 - firsttest.cgi
#!/usr/bin/perl
- w
use CGI::Carp 'fatalsToBrowser'; #
Необходимы
use warnings; #
для отладки
use strict; #
скриптов
use CGI;
my $q = new CGI;
print $q->header(-type => 'text/html',
-charset => 'windows-1251' ), $q->start_html( "Тест
Apache 2.2.14!" );
print "<table width=\"50%\" border=\"1\">
<tr>
<td align=\"center\"> ";
print $q->h3( "<br>Тест сервера
Apache 2.2.14 <br>
и ActivePerl-5.8.8.824<br>
- прошел успешно!");
print "</td>
</tr>
</table> ";
print $q->end_html;
Командный файл, направляющий вывод из Perl скрипта в файл -
firsttest.cmd
с таким содержанием:
perl firsttest.cgi > firsttest.htm
Разместите эти два файла в любом каталоге и запустите командный файл -firsttest.cmd

После его выполнения будет создан файл - firsttest.htm. Запустив последний вы увидите:
Тест сервера
Apache 2.2.14
и ActivePerl-5.8.8.824
- прошел успешно!
Если из скрипта testcod.cgi , удалить
точку с запятой в конце, приведенной ниже, предпоследней
строки и записать его.
</table> " ;
То
после выполнения командного файла будет получено сообщение:
Software error:
syntax error at firsttest.cgi line 21, near "print"
(Might be a runaway multi-line " string starting
on line 18")
Execution of firsttest.cgi aborted due to compilation
errors.
Программная ошибка:
синтаксическая ошибка на firsttest.cgi строке
21, около "print"
(Могла бы быть многострочная " " строка 18)
Выполнение firsttest.cgi прерывалось из-за ошибок
трансляции.
Критически относитесь к значительной части материалов посвященным языку Perl, опубликованным в Интернете. Складывается впечатление, что не все они писались авторами, знающими, о чем пишут. Рекомендации и советы в этих статьях не только вводят в заблуждение, но и могут привести к множеству ошибок, на их выявление придется потратить десятки часов и порой устранение, которых без посторонней помощи невозможно.
В Интернете, в материалах с описанием языка Perl, годами из статьи в статью, приводятся чьи - то противоречащие друг другу цитаты -
1. "Преимущество интерпретаторов - получение ответа после введения задачи и нажатия клавиши Enter ".
Приводится пример быстрого получения результата 'вычисления', такого как - print 10-5; = 5. Непонятно - кому нужно использовать компьютер для таких вычислений? Чтобы выполнить что-то “сложней”, например, print ((10-5 + 7)*2); и получить правильный результат, нужно изучить, по меньшей мере, приоритеты выполнения арифметических операций и правила написания формул. Ниже приведены результаты работы скрипта выполненного, при загрузке этой страницы
Исходный текст скрипта на Perl.
1 #!/usr/bin/perl
-w
2 use CGI qw(:all);
3
4 print header;
5
6 print "<b> print (10-5+7)*2; = ";
7 print (10-5+7)*2;
8 print "<br>\n";
9 print " print ((10-5+7)*2);
= ";
10 print ((10-5+7)*2);
11 print "</b>";
Первая строка, начинающаяся со знака комментария (#); понимается интерпретатором как программа на Perl. Она может содержать необязательные не обязательные аргументы. В данном примере - это ключ -w, указывающий интерпретатору о выдаче предупреждающих сообщений об опасных участках исходного кода.
Если вы использовали
не специализированный редактор Perl для написания
кода скрипта, то об ошибке в седьмой строке можно узнать
только из содержания файла -
error.log сервера Apache:
[Tue Mar 08 10:08:00 2007] [error] [client 127.0.0.4]
print (...) interpreted as function at C:/www/docs/avege.ru/cgi-bin/intperl.cgi
line 7.
[Tue Mar 08 10:08:00 2007] [error] [client 127.0.0.4]
Useless use of multiplication (*) in void context at
C:/www/docs/avege.ru/cgi-bin/intperl.cgi line 7.
Вывод результата выполнения.
print (10-5+7)*2; = 12
print ((10-5+7)*2); = 24
Без определенных знаний, получить правильный результат невозможно ни при использовании языка-интерпретатора, ни языка-компилятора.
2. "Написание скриптов на Perl возможно в любых текстовых редакторах"
Если - бы предыдущий пример создавался в специализированном редакторе, например - OptiPerl, с автоматический проверкой на синтаксические ошибки, то трудно - бы было не заметить выделенную седьмую строку скрипта и предупреждение в строке состояния. При использовании ключа -w в первой строке скрипта и нажатии на пункт меню - Run in Browser , было - бы получено приведенное ниже сообщение.
print (...) interpreted as function at C:\www\docs\avege.ru\cgi-bin\intperl.cgi
line 7.
Useless use of multiplication (*) in void context at
C:\www\docs\avege.ru\cgi-bin\intperl.cgi line 7.
Бесполезное использование умножения (*) в контексте
в C:\www\docs\avege.ru\cgi-bin\intperl.cgi строка 7.
Content-Type: text/html; charset=ISO-8859-1
print (10-5+7)*2; = 12
print ((10-5+7)*2); = 24

Устранение ошибки в арифметическом выражении позволило - бы избежать вывода неправильного результата вычислений. Не говоря уже о проблеме символа конца строки Подробней см. Ошибки в скриптах на Perl.
Достаточно взгляда на фрагмент программы на Perl, чтобы понять, что без анализа и контроля корректности кода, возможно написание только таких программ как "Привет мир"

Если написать скрипт на Perl состоящий из 100 строк например, в программе 'Блокнот', без элементарной проверки синтаксиса, то исправление ошибок и его отладка могут занять многие часы. О других проблемах, связанных с написанием сценариев Perl в неспециализированных редакторах, см. Типичные ошибки в скриптах на Perl.
3. В некоторых изданиях подчеркивается как преимущество интерпретатора Perl, перед языками-компиляторами - возможность оперативного внесения изменений в исходный текст без последующей компиляции, необходимой в последних.
Это очень спорное заявление. Компиляция проекта из ста файлов, на современном компьютере, занимает от 2 до 10 секунд. Полученная программа загружается и начинает выполняться за доли секунды. Если написать, что - то подобное на языке интерпретаторе, то загружаться скрипт будет за значительно большее время. И этот процесс будет повторяться при каждом его вызове. Но, внесение изменений без проверки правильности результата - это не программирование, а какое - то иное занятие. Проверка изменений, на языке-интерпретаторе, займет значительное время, потому что каждый раз скрипт будет анализироваться и загружаться им. Изменения, внесенные в один или несколько файлов проекта (как правило, вся сотня файлов исходных кодов не изменяется в один раз) превращаются компилятором в исполняемый файл за доли секунды. А если учесть что, например, Borland C++ -компилятор, как и многие языки объектно-ориентированного программирования, имеют универсальные и удобные инструменты для разработки, анализа и тестирования программ в интегрированной среде разработки (одном программном комплексе), позволяющие создавать практически отлаженные программы для определенной OC. То в случае со скриптами на Perl вам придется использовать значительное количество программных средств для написания, выявления и устранения ошибок, тестирования на локальном сервере, размещения и тестирования на веб-сервере. Доступ к последнему, требует значительных финансовых и временных затрат, и все это, без гарантии получения нужного результата. Поэтому, нужно подходить к Perl, как инструменту, который вы вынуждены использовать для взаимодействия между пользовательской интерактивной HTML-страницей (среда браузера, клиент) с web-серверами (в основном на платформе Unix) через протокол CGI (Common Gateway Interface - общий интерфейс взаимодействия).
Чтобы получить полноценный http server apache, необходимо установить: apache, php, mysql, perl, apache, phpmyadmin, sendmail.

apache
perl
php
phpmyadmin
mysql
sendmail
На следующей странице описана установка Perl на локальный компьютер, для создания и отладки perl скриптов на сервере Apache.
