Все хелперы в Mojolicious работают через AUTOLOAD Просто перегрузите в своём коде Mojolicious::Controller::AUTOLOAD
sub Mojolicious::Controller::AUTOLOAD { '' } и все вызовы к хелперам пройдут успешно, за исключением когда хелпер возвращает объект $c->some_helper->object_method для этих случаев можете попробовать dispatch табличку my $table = { method_name => sub { 'вернуть нужный объект тут' }, method_name2 => sub { ... } } sub Mojolicious::Controller::AUTOLOAD { return $table->{ $AUTOLOAD }->() } 15.06.2017, 16:19, "Alexander M. Pravkin via Moscow-pm" <moscow-pm@pm.org>: > Уважаемые почитатели Mojolicious, помогите с такой проблемой. > > Есть некоторое число проектов, которые благополучно работают на perl > 5.16-5.20, но на свежем валятся, ибо там повсеместно используются > конструкции, не рекомендованные к использованию. Собственно, встала > задача исправить это безобразие. > > С самим кодом проблем нет, проблемы есть с embedded-perl-шаблонами Mojo. > Если бы их была пара штук или хотя бы пара десятков, можно было бы и > вручную обойти. Но их около сотни только в одном проекте. > > В общем, понадобилась автоматическая валидация, хотя бы по синтаксису. > На просторах, увы, не нашёл ничего, решил попробовать сам. > > Простые шаблоны нормально обрабатываются вот таким скриптом: > > use strict; > use open qw(:std :utf8); > use Mojo::Template; > > my $file = $ARGV[0] > or die "Usage: $0 mojo-template.ep\n"; > > my $mt = Mojo::Template->new(vars => 1); > > my $res; > # Проход первый: ищем необъявленные переменные > { > local $SIG{__WARN__} = sub {}; > $res = $mt->render_file($file) > or die "render_file $file returned nothing\n"; > } > > # Если ошибок не было -- всё OK > ref $res and $res->isa('Mojo::Exception') > or exit 0; > > # Ищем все переменные, используемые шаблоном > # Считаем, что автор кода тоже передаёт render'у все нужные > my $errors = "$res"; > my %stash = map { $_ => undef } > ($errors =~ /Global symbol "\$(\w+)" requires explicit package name/g); > delete $stash{_O}; # подставная переменная Mojo::Template > > print "+++ $file variables: ", join(' ', sort keys %stash), "\n"; > > # Проход второй, настоящие ошибки > $res = $mt->render_file($file, \%stash); > if (ref $res and $res->isa('Mojo::Exception')) { > die "\n--- $file has errors:\n$res\n"; > } > > Но он, как минимум, не понимает helper'ов от всяких плагинов (layout, > include и прочие form_for). Присобачить использование плагинов к > одинокому Mojo::Template я ниасилил. Кто-нибудь может подсказать? > > -- > Правкин Александр > -- > Moscow.pm mailing list > moscow-pm@pm.org | http://moscow.pm.org -- Moscow.pm mailing list moscow-pm@pm.org | http://moscow.pm.org