May 25th, 2009

PerlRequire и все-все-все

Дано: модуль, обрабатывающий http-запросы. Модуль умный, работает с mod_perl2 а его брат-близнец - с mod_perl 1 соответственно. Где-то рядом startup.pl, в котором есть use lib ... (а там собственно и лежит искомый модуль и много других модулей). При указании PerlRequire в конфиге апача всё работает как и задумывалось.

Нужно: как-то подключить всё это счастье, имея в распоряжении .htaccess. Очень желательно - правильным с точки зрения mod_perl способом - PerlResponseHandler module

Collapse )

Собственно вопрос - можно ли под mod_perl2 установить как Handler (мне нужно на директорию) модуль, лежащий НЕ в @INC по умолчанию, используя ТОЛЬКО .htaccess (а не конфиг апача)?
gleb

Strawberry Perl 5.10 [решено]

Решил проверить программу на Винде (ниже в сообществе уже обсуждалось). Программа работала на Убунте с Perl 5.8. В 5.8 для Винды словил пару багов, попробовал запустить в 5.10 и словил вот что.Код таков:

Основной файл:

#include local module library
use lib (catdir($Bin,"lib"));
use Petal;
use My::Util; #В этом модуле экспортируется функция time2string
...
...
our $today = time2string();


На этом месте Perl говорит: undefined subroutine &main::time2string !
Это какое-то нововведение в 5.10 (в том же Виндвом Perl 5.8 проблемы не было)? Тогда что именно нужно сделать, чтобы он понял, откуда ее брать?

На всякий случай, проверил - вот что в модуле Util(это не объект):

use strict;
use Exporter;
use utf8;

our @EXPORT = qw(... time2string ...); # вот же она!
our $VERSION = "1";


Точки везде означают пропуски.
gleb

Strawbery Perl-2

Почему под Виндой может не работать такое регулярное выражение?

$path =~ s{^($site_pages_path|$site_assets_path)}{}ig;

ОДолжно откусывать начало пути к файлу. Все переменные, судя по выводу в консоли на месте и значения имеют верные. На Линукс (Perl 5.8) даже не заикалось. Под Вин это выражение попросту не меняет $path. Да, во весех переменных пути в стиле Виндовс, начинающиеся с C:\path_to\...

Пока писал, сообразил, что,наверное, слэши в путях интерполируются в левой части выражения... А что с ними делать в таком случае?! Приходит в голову только s{\\}{/} в начале, или даже s{\\}{\\}, но чувствую, что это неправильно.