рубрика Perl

Perl 7 - выход?

11.02.2013г. // Рубрики: Perl
perl7
Ситуация с шестым перлом, который то ли когда-нибудь выйдет, то ли нет, то ли - это вообще не перл, настолько многих утомила за последние лет десять, что народ с энтузиазмом хватается за идею переименования Perl 5.20 в Perl 7:
http://mail.pm.org/pipermail/moscow-pm/2013-February/015615.html
Что до меня - так я всеми четырьмя конечностями "ЗА", а Perl 6 вообще переименовал бы в какой-нибудь другой проект, чтобы обывателей зря не пугать.

Очистка ссылок на найденный текст в регулярных выражениях

08.02.2013г. // Рубрики: Рецепты, Perl
Не все программисты (например, я) непрерывно помнят, что при использовании регулярных выражений, в случае несоответствия шаблона переменной, в конечном итоге в $1 и прочих $2 может оказаться всё, что угодно. И совсем не обязательно это самое "все, что угодно" является undef. Если код большой, то там скорее всего будет находится результат от предыдущего регэкспа. Поэтому, хотелось бы периодически опустошать эти специальные переменные - ссылки на найденный текст.
Вообще говоря, сама идея сомнительна - правильнее проверять возвращаемое значение от сравнения:
if ($str =~ /pattern/ ) {
    ....
}
Тем не менее, изредка бывают ситуации, когда хочется ставить условие по $1, $2, или даже по $&. Конструкция
undef $1;не сработает - ибо "Modification of a read-only value attempted". Существует простой выход - перед вашей регуляркой сделать
'' =~ m/()()()()/;Пустую строку сравниваем с пустым шаблоном и получаем пустые значения в специальных переменных, в этом примере вплоть до $4.
Не буду дискутировать, насколько приведённый приём отвечает "хорошему стилю", но кому-нибудь может оказаться полезен.

Неожиданная проблема с Apache2::Request под убунтой

14.02.2011г. // Рубрики: web, Рецепты, Perl
Вчера случился трах с модулем Apache2::Request совершенно на ровном месте. Апач под mod_perl2 тихо умирал при попытке сделать
my $req = Apache2::Request->new($r);Сидел и тупо смотрел на 502 ошибку nginx-а, пока не сообразил заглянуть в самый главный апачевский error_log.
Короче, сухой остаток: после того, как под убунтой поставите
sudo apt-get install libapreq2необходимо ручками создать символическую ссылку на библиотеку apreq
ln -s /etc/apache2/mods-available/apreq.load apreq.loadНеобъяснимая недоработка авторов пакета, и времени убил.. (((

Поиск и замена по группе файлов с помощью Perl

30.08.2009г. // Рубрики: Рецепты, Perl
Периодически вспоминаю, а затем также периодически забываю  нужное заклинание командной строки для того, чтобы в каталоге поменять в каждом файле одно значение на другое. Одно время даже его написал на бумажке и прилепил к монитору.. потом поменял работу и заклинание опять потерялось. Начинаешь искать в поисковиках - все дружно выдают разную белиберду, вместо нужного.
Короче, вчера опять восстановил, воспользовался и решил сделать запись в блоге - чтобы в следующий раз проще было отыскать :D
Итак, в куче html-шаблонов потребовалось удалить некоторые стили, строка выглядит так:
perl -i.bak -pe "s/\s+class=\"post\-entry\"//ig" *.tplРазумеется, все это без заморочек работает только под юниксами - винда не понимает *.tpl, ей нужно указывать каждый файл по-отдельности. Впрочем, там существуют bat-файлы..

Капча без графики

03.02.2008г. // Рубрики: web, Perl
Капча - элемент веб-формы, препятствующий отправке данных на сервер роботами (программами). То есть, некоторая проверка на интеллект того, кто заполнил форму. Обычно капча - картинка, на которой изображены цифры (зачастую затрудненно даже человеку разглядеть их) и для продолжения своих действий пользователь должен ввести прочитанное число в поле. Моя идея текстовой капчи проста - предлагается к рассмотрению слово с грамматической ошибкой, требуется исправить ошибку и ввести правильный текст.  Читать полностью >

vbulletin: скрипт для автоматизированного перевода ссылок в редирект

03.10.2007г. // Рубрики: web, Perl
Речь идёт, разумеется, о ссылках в постах. :)
Многих владельцев форумов угнетает, почти бесконтрольное, проникновение ссылок на их сайт. А легкость заспамливания форумов провоцирует многих "продвиженцев" гадить на них.
Несмотря на кажущуюся безысходность, решение проблемы лежит на поверхности - разработчики форумов вообщем-то сами способны её решить. Ну, да ладно..
Смысл идеи следующий: на хостинге по cron-у запускается с некоторой периодичностью скрипт, который шерстит базу данных форума и все ссылки, содержащиеся в постах трансформирует в неиндексируемый редирект. Для большей неиндексируемости, url редиректа закрыт в robots.txt. Вот, собственно, и всё. :)
Такой скрипт для vbulletin я накануне написал, дополнив изложенный сюжет "белым списком" - перечнем доменов, разрешенным к появлению на страницах форума.
Если кого-нибудь заинтересует реализация "чистого" форума - стучитесь в аську 136059598 (в рабочее время мск) - за скромное вознаграждение  поделюсь программой и окажу помощь в ее первоначальной установке на ваш хостинг. :)

Отключение warnings в сценариях ключом в config-файле

02.01.2007г. // Рубрики: web, Perl
Обычное дело - когда создаешь набор скриптов для веб-сайта, используешь повсюду прагму use warnings. Приходит время сдавать работу заказчику, прагма становится лишней (ну, скорее всего) - ибо нефиг захламлять лог-файл бессмысленными предупреждениями. Вообщем-то, не бог весь какая проблема, но когда много файлов сценариев - неприятно. Доверить массовую чистку внешним скриптом перед сдачей работы я не рекомендовал бы.. спать спокойней будешь. Решение нашлось простое и элегантное.  Читать полностью >
   »

Рубрики