Статьи

Perl, PHP и кислый виноград?

Ищите CPAN (репозиторий Perls для повторно используемых модулей) по «PHP», и вы можете быть удивлены результатами.

Например, PHP :: Strings . Что интересно в этом модуле, так это то, что он частично реализует строковые функции PHP в Perl или говорит вам, где искать дополнительную информацию.

Следующий код, например;


#!/usr/local/bin/perl -w
use strict;

use PHP::Strings qw( :trim );

my $word = " Hello World! ";
$word = trim($word);

Результаты в следующем сообщении;

<:strings::trim will="" not="" be="" implemented=""> ,

… и отсылает вас к FAQ по Perl: как убрать пробел из начала / конца строки? , Хорошая вещь, если вы программист PHP, взломавший Perl.

Что не так приятно, так это связанное чтение, которое ссылается на виртуальный веб-ринг «Я ненавижу PHP». Просматривая этот список, мы имеем некоторые действительные технические моменты в отношении PHP, но в значительной степени смешанные с заблуждениями, возникающими из-за распространенных «ошибок», которые поражают Perl-кодеров при начале работы с PHP. Хотя акцент делается на техническом сравнении, создается впечатление, что есть некоторая, более глубокая (иррациональная?) Причина, по которой (некоторые) кодеры Perl чувствуют необходимость попробовать PHP.

Почему?

Заманчиво предположить, что некоторые считают, что PHP украл «законное место» Perl как веб-язык № 1. Другими словами, «кислый виноград», но, возможно, это несправедливо.

Может быть, это потому, что (внешне) Perl и PHP выглядят слишком похоже (соперничество между братьями и сестрами и т. Д.). В наши дни не думаю, что это правда. PHP зарекомендовал себя как специализированный язык для решения «веб-проблемы», в то время как Perl остается мощным языком общего назначения . И хотя PHP изначально был вдохновлен Perl, Java кажется более важным фактором в современном дизайне PHP.

Должен признаться, я не самый большой поклонник Perl, хотя я бы выбрал его (или, еще лучше, Python), а не PHP для таких задач, как пакетная обработка и работа в сети.

Для меня Perl предлагает слишком много возможностей для написания нечитаемого кода. Функция trim () , которую PHP :: Strings отказывается реализовывать, подчеркивает проблему. Что имеет больше смысла (для человека)?


$string = trim($string);

или


$string =~ s/^s+//;
$string =~ s/s+$//;

Но это только мое собственное предпочтение.

Во всяком случае, в конце концов, священные войны ни к чему не привели. Более полезным является этот выпуск Perl Review , в котором проводится отличное сравнение Perl и PHP, что делает хорошую отправную точку, если вы знаете одно и вам нужно работать с другим.