Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#!/usr/bin/perl -w
use strict;
use Benchmark qw(timethese);
timethese(10, {
'LOOP' => q[
my $i;
my $s;
for ($i=0; $i<1000000; $i++) {
$s .= $i;
}
],
'JOIN' => q[
my $s = join '', (1..1000000);
],
});
1;
__END__
Но вот в какой же язык перетекают все потенциальные перловые проекты? Размываются между php/python/ruby?

>perl — 3247
при этом «чистый» перл там уже странице на пятой почти заканчивается, т.е. перл либо идёт в нагрузку, либо (что реже) альтернативным языком к php/python, итого получается чуть ли не на порядок меньше, т.е. всего 300 вакансий
Если не верите — сделайте поиск как «Search job title only»:
java — 3083
c++ — 823
c# — 900
perl — 167(!)
php — 292
>Вы выборку из этих данных какую делали? Открывали каждую вакансию типа 'Software Developer' или 'Software Engineer' без указания языка? Или просто сделали предположение что это не Perl и дальше пятой страницы не смотрели?
посмотрел 5 страницу, 6, 10 и парочку после 10.
>Объясните, на основании каких данных вы решили отбросить >3000 вакансий (95% процентов)?
даже если и есть ещё пара сотен, как вы предлагаете их выискивать?
>я вот нашел случайным тыком такую даже на 25-ой странице
исключение, подтверждающее правило?
Как бы сам dice.com сортирует вакансии по релевантности…
>Это можно объяснить например тем, что примерно половина вакансий для Perl не имеет названия языка в job title. См. jobs.perl.org — из 20 вакансий в title Perl упоминается у 12 (~60%)
половина VS 10% — приличная разница, не находите ли?
В пятых я никому не пожелаю переносить крупный Perl проект с Linux на Windows, особенно если в нем куча модулей из CPAN. Хорошо, если это ваш проект, типа сайт, который всегда будет работать на одном сервере и у него один хозяин. А если у вас тиражируемый продукт?
>Я лично не испытываю особых затруднений при разработке приложений, которые используют только pure-Perl модули
Я наверное не ошибусь, если замечу, что даже внутри самого банального perl-date-time модуля есть замечательные файлы DateTime.bs и DateTime.so? На pure perl они не очень тянут. Пример не самый лучший, потому-что модуль известный и в готовом виде есть везде.
Но если например в проект взять довольно шустрый движок темплейтов ClearSilver (http://www.clearsilver.net/), который написан на C++ и имеет обертку к Perl, то может так вдруг оказаться, что в вашей новой версии ОС нет готового модуля для этого движка. В прошлой был, в новой — нет. Увы, случай из реальной жизни, я уже молчу про Windows.
Как собственно и вопрос удобства их использования. Ведь если в CPAN начать устанавливать один модуль, вдруг окажется, что у него в зависимостях ещё пять, и у этих пяти есть свои зависимости — во славу компилятора make. Хотя несомненно, что большая часть этих модулей есть в пакетах. В общем, ещё то удовольствие.
Я повторюсь, вопрос затрагивает исключительно кросплатформенность Perl. В Linux таких проблем вы наверняка не встретите.
>mod_perl дает намного больше возможностей нежели mod_php.
А так ли нужны возможности в угоду сложности?
не секрет, что благодаря ему php скрипты под apache работают шустрее чем скрипты на perl.
>В качестве тупой запускалки по типу mod_php сейчас есть mod_perlite и он уже может исполнять Movable Type.
Ему уже года три-четыре им по очереди занимается то один то другой энтузиаст и этот проект все-ещё в стадии вау-проекта. Типа, вау! Он вроде-бы смог запустить Movable Type!
Как пример — куча модулей, включая TemplateToolkit не знают, что есть на свете юникод, особенно это затрагивает чтение-запись в файлы. Поэтому приходилось либо искать по мейллистам плагины (tt2) либо переписывать модули.
Потом начинаются заморочки. Перл с юникодом странно работает, он может получать юникод, но не подозревать об этом если у строки не проставлен флаг, что это юникод.
Т.е. в реальности надо постоянно заботится во всех слоях между которыми идет обмен данными — web, db, perl, regexp, file i/o, stdin, stdout… Это не смертельно, но иногда злит.
Именно, других вариантов ведь нет? Либо завязывать приложение на mod_perl, либо завидовать наличию mod_php
В перле надо везде следить за юникодом, где есть ввод-вывод. А данные могут из БД попасть в перл, пройти через пару модулей, через регекспы и выйти в виде кракоябр через JSON::Any. Ищи потом свищи, где проблема.
> Урежте осетра.
Простите, что сделать?
> Или как у вас regexp оказался отдельным слоем?
Вот например linuxforum.ru/index.php?s=7ddd94c1171d58bf01c0f7363571055d&showtopic=51252&st=0&p=504768entry504768 или вот web.opennet.ru/openforum/vsluhforumID9/8150.html
Проблема решается, но начинающего может ввести в легкий ступор.
Или как было сказано в камментах на опеннете — «А вообще работа с юникодом в перле(да и в большинстве других языков) это шаманство, особенно когда много _различных_ потоков ввода/вывода» (с)
Извините, но EPIC, судя по его докуам умеет только «extract_subroutine», rename он уже не умеет. Это сложно назвать поддержкой рефакторинга кода.
Как и возня с search-replace средствами по всему дереву проекта.
Чем мне нравится Java, так это тем, что очень легко искать в проекте места испорченные корявым рефакторингом. И ещё проще код рефакторить. В Perl это далеко не так, в нем можно играючи поиметь кучу геморроя на пустом месте.
>По большому же счету я затрудняюсь называть чисто косметический rename function — рефакторингом.
Об чем и речь. Остается лишь find/replace.
>Кучу геморроя вы поймаете в любом языке как только попробуете поменять какой-нибудь низкоуровневый API приложения и сделать следующий шаг после применения 'Add Argument' к методу
В IDEA я по крайней мере быстро выявлю все проблемные места.
В популярных IDE для Perl (коих две) вроде бы нет даже примитивного «find usage»?
Mini-FAQ по Perl (Частые вопросы, ЧаВо)