Вся "прелесть" PERL заключается в возможности создавать динамические страницы на основе внешней разнообразной информации. А это можно сделать только через обработку входных параметров.
Немного теории:
Скрипт читает данные полученные методом POST, GET и из хеш-массива %ENV{}.
GET - запрос применяется для получения данных указанных в URL.
POST - то же, что и GET, но содержит данные передаваемые в теле запроса.
Хеш-массив %ENV{} содержит такие элементы, как имя программы сервера, версия CGI-интерфейса, корневая директория страниц и т.д.
Практика:
Необходимо запустить PERL скрипт из HTML страницы и передать ему параметры указав их в URL.
Решение:
Начнем с того, что страничка должна исполнять SSI директивы. Как правило эти странички имеют расширение .SHTML.
Далее необходимо запустить PERL скрипт.
Сделать это можно двумя способами.
Точнее одной из двух директив:
Первая: <!--#exec cgi="myscript.pl"-->
Вторая: <!--#include virtual="myscript.pl"-->
Названия, надеюсь, говорят сами за себя.
Первая - исполнить скрипт.
Вторая - включить (вставить), но не скрипт, конечно, а результат его работы.
И до тех пор пока Вы не передаете скрипту какие-то данные, разницы в работе этих директив не видно.
А что происходит, когда скриптом необходимо обработать данные переданные методом GET, то есть в строке URL?
Скрипты запущенные директивой <!--#exec cgi="myscript.pl"--> видят данные, указанные в строке URL безо всяких проблем.
А вот директивой <!--#include virtual="myscript.pl"-->, нет. То есть эти данные нужно принудительно "подсунуть" в вызов скрипта. И делается это следующим образом: <!--#include virtual="myscript.pl?$QUERY_STRING" -->.
А к чему собственно написана статья? Ну используй <!--#exec cgi="myscript.pl"--> где нужны данные из URL, и <!--#include virtual="myscript.pl"--> где нет!
Но дело в том, что все Хостеры настоятельно рекомендуют использовать для вызова скриптов именно директиву <!--#include virtual="myscript.pl"-->. А недавно я наткнулся на сервер, где директива <!--#exec cgi="myscript.pl"--> просто не исполнялась.