ЖУРНАЛ ХАКЕР

PHP vs PERL. Схватка между PHP-кодером и Perl-кодером

Xakep, номер #035, стр. 035-048-1


Nikitos (nikitos@atom.ru) & TEHb13

За последний год PHP здорово поднялся. Прилавки наводнило множество книг, куча сайтов перешло на него, перл медленно, но верно сдает позиции... Именно поэтому сейчас самое время твердо для себя решить: на чем же все-таки писать? На простом PHP или старом добром ПЕРЛЕ? Вопрос не из легких, однозначного ответа, как всегда, нет - оба языка, бесспорно, достойные конкуренты, хотя у всех, конечно, свои недостатки и преимущества. Они-то и будут изложены в статье, а ты уж сам решай, что тебе нужно, а что нет...

Раунд 1

Nikitos

На мой взгляд, большим плюсом PHP, по крайней мере для сравнительно небольших проектов, является возможность интегрирования PHP-кода прямо в html - он вставляется между тегами <? И ?>.

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

1. Значительно упрощается использование шаблонов - вместо статичного html'а/текста читаешь и выводишь файлы.

2. В одном скрипте - например, index.php - можно, притом достаточно просто, намутить КУЧУ всего. Например, динамичную главную страницу, регистрационную форму, логин-форму, персональную страницу, голосование и т.д. Это реально и достаточно просто - в зависимости от передаваемой переменной будет выводиться то-то, делаться се-то.

Как мне, php-кодеру, представляется, в Перле одним скриптом бы не обошлось... а сколько SSI... Глядя на этот плюс, замечаю МИНУС: некоторые неудобства при создании серьезных (прежде всего больших ;) проектов. Хотя это неудобство решается весьма красиво - весь дизигн скидываешь в отдельные файлы и вставляешь, где надо, средствами PHP.

TEHb13

В Перле дело обстоит не столь сложно, как принято думать: например, все нужные html страницы можно также держать в отдельных файлах, можно подойти более простым методом, а в частности так:

$html = <<HTML_TEXT;

...some html code <html>...

HTML_TEXT

Таким образом можно в одну переменную включить большой массив строк для последующего вывода, причем в него можно вместо каких-то элементов вставлять полноценные переменные типа $new_var, что впоследствии заменится содержимым переменной.

Раунд 2

Nikitos

Сравнивая языки, нельзя упустить немаловажную деталь - работу с html-формами. Формы, как ты, надеюсь, знаешь - это куча полей, которые заполняет юзер, жмет на submit, и все данные летят по направлению в action - твой скрипт, где они юзаются.

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

Например: было поле <input type=text name="lala">, юзер его заполнил, отправил, теперь то, что он загнал в это поле, лежит в переменной $lala.

TEHb13

"Ха!" - скажу я вам и напишу нечто вроде:

use CGI;

$q = new CGI;

$name = $q->param('name');

@all_form = $q->param();

Вот эти несколько строк демонстрируют, как с помощью встроенных средств использовать данные, передаваемые формой, можно вытаскивать значение по имени, как в примере ($name = $q->param('name') ;). Или же вернуть в массив @all_form все имена передаваемых переменных в переданном порядке для последующего извлечения (естественно, декодирование из юникода происходит автоматически в модуле).

Содержание  Вперед на стр. 035-048-2

Copyright Gameland Publishing 1999-2000 ©