![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
[3 августа 2001 г.] |
Язык может считаться законченным только тогда, когда в его синтаксисе задействованы все символы на клавиатуре. Ларри Уолл, изобретатель Perl |
Настоящим открывается цикл статей, посвященных сравнению
Начнем с примера. Вот минимальная программа на PHP, которая еще выполняет какие-то логичные действия:
<?="Hello, ".@$name."!"?> <form action=hello.php method=get> <input type=text name=name> </form>
А вот то же самое, но на Perl. К превеликой радости любителей PHP, код очень велик и скучен, а также изобилует всякого рода специальными символами, способными соревноваться по загадочности с древнешумерскими письменами:
#!/usr/bin/perl -w print "Content-type: text/html\n\n"; foreach my $pair (split(/&/,$ENV{QUERY_STRING})) { my ($k,$v)=split /=/,$pair,2; $k=~s/%([0-9a-fA-F]{2})/chr(hex($1))/ge; $v=~s/%([0-9a-fA-F]{2})/chr(hex($1))/ge; $$k=$v; } defined $name or $name=""; print "Hello, $name!"; print "<form action=hello.pl method=get>"; print "<input type=text name=name>"; print "</form>";
Впрочем, к синтаксису Perl со временем привыкаешь, как к неизбежному. Можно даже сказать, перестаешь его замечать. (Впрочем, можно ли перестать замечать боль или заедание пробела на клавиатуре? Лично мне последнее не удавалось никогда.)
Что произойдет, если мы допустим небольшую синтаксическую ошибку в первом скрипте? В общем-то, ничего страшного. PHP сообщит об этом непорядке прямо в окно браузера, и мы сразу же сможем исправить недоразумение, переключившись на окно текстового
Если же теперь допустить синтаксическую ошибку в Perl-скрипте (например, пропустить пару-тройку точек с запятыми), то произойдет куда более драматическое действо. А именно, сервером (которым в большинстве случаев является Apache) будет выдано стандартное сообщение о 500-й ошибке. При этом программисту черным по серому (в буквальном смысле) напомнят, что причину этой самой ошибки он всегда может посмотреть в лог-файлах сервера.
![]() |
Какое хамство! Они бы еще посоветовали обратиться к давно отошедшему в мир отпусков системному администратору. Если программист отлаживает свои скрипты в Windows (что теперь уже совсем не в диковинку), смотреть лог-файлы будет очень и очень неудобно. |
Итак, мы видим, что:
Вы можете высечь эти слова на камне и повесить над монитором, потому что это правда. Сам Ларри (изобретатель Perl), наверное, был бы с вами согласен. Однако, беря в руки долото и увесистый кусок гранита, вспомните об одном слове. В нем весь смысл этой наблы. Это слово входит в сочетание «простой Perl», что означает «Perl без дополнительных модулей».
Что такое модуль? Это просто кусок кода, который можно подключить (вызвать) в программе:
use ИмяМодуля;
Вот тут-то, образно говоря, и порылась наша собака. Оказывается, существуют модули для Perl, которые делают работу с Perl настолько же легкой, насколько она легка в PHP. Переписав приведенный выше злосчастный пример скрипта с их использованием, получим примерно следующее:
<?use CGI::WebIn; use CGI::WebOut(1); no warnings;?> <?="Hello, $name!";?> <form action=hello.pl method=get> <input type=text name=name> </form>
Perl ли это? Не совсем, однако всю работу по переводу текста в нужный вид берут на себя модули. Как видите, в этом коде используются все преимущества PHP, а именно:
Что же это за магические модули, и как они работают? Об
![]() |
|
Дмитрий Котеров |
3 августа 2001 г.
©1999-2019
|
|
Вернуться к оглавлению |