[PERL] помогите найти ошибку в работе с HTTP::Router

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Darwent
рядовой
Сообщения: 23
Зарегистрирован: 2008-11-17 10:28:39

[PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение Darwent » 2010-02-23 4:23:01

Не могу найти ошибку в работе с HTTP::Router, поставил конфиг который написан в документации http://search.cpan.org/~masaki/HTTP-Rou ... /Router.pm

Код: Выделить всё


use HTTP::Router;
use HTTP::Router::Route;
use HTTP::Router::Match;
use HTTP::Router::Debug;
use HTTP::Router::Declare;

my $router = HTTP::Router->new;

my $route = HTTP::Router::Route->new(
      path       => '/',
      conditions => { method => 'GET' },
      params     => { controller => 'Root', action => 'index' },
  );
$router->add_route($route);


# GET /
my $match = $router->match('/see/');
$match->params;  # { controller => 'Root', action => 'index' }
$match->uri_for; # '/'

выдаёт ошибку Can't call method "params" on an undefined value at

Сервер у меня свой на FreeBSD модули ставил из портов, вроде всё правильно собралось без ошибок, в чём может быть проблема?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение thefree » 2010-02-23 7:32:11

полностью ошибку скопируйте
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Darwent
рядовой
Сообщения: 23
Зарегистрирован: 2008-11-17 10:28:39

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение Darwent » 2010-02-23 10:13:48

Код: Выделить всё

Software error:

Can't call method "params" on an undefined value at /pub/www/homepage/Домен.ru/www/index.pl line 170.
For help, please send mail to the webmaster (sergey@test.ru), giving this error message and the time and date of the error. 
А вот она строка 170

Код: Выделить всё

$match->params;  # { controller => 'Root', action => 'index' }
Из небольших соображений убрал домен

Darwent
рядовой
Сообщения: 23
Зарегистрирован: 2008-11-17 10:28:39

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение Darwent » 2010-02-23 10:26:34

Код: Выделить всё

print Dumper $route;
$VAR1 = bless( { 'params' => { 'controller' => 'Root', 'action' => 'index' }, 'path' => '/', 'conditions' => { 'method' => 'GET' } }, 'HTTP::Router::Route' );

пробовал ставить

Код: Выделить всё

my $match = $router->match('/');
Всё равно та же ошибка

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение ProFTP » 2010-02-23 19:21:48

Код: Выделить всё



use HTTP::Router;
use HTTP::Router::Route;
use HTTP::Router::Match;
use HTTP::Router::Debug;
use HTTP::Router::Declare;

my $router = HTTP::Router->new;

my $route = HTTP::Router::Route->new(
      path       => '/',
      conditions => { method => 'GET' },
      params     => { controller => 'Root', action => 'index' },
  );
$router->add_route($route);


# GET /

use Data::Dumper;

print Dumper($router);

print "\n\n --------------- \n\n":

print Dumper($match);

my $match = $router->match('/see/');
$match->params;  # { controller => 'Root', action => 'index' }
$match->uri_for; # '/'
посмотреть надо есть ли метод...

скорее всего вы что-то напутали...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Darwent
рядовой
Сообщения: 23
Зарегистрирован: 2008-11-17 10:28:39

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение Darwent » 2010-02-23 23:01:28

Я всё делал по документации метод в пакете есть

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение ProFTP » 2010-02-24 0:18:36

Darwent писал(а):

Код: Выделить всё

print Dumper $route;
$VAR1 = bless( { 'params' => { 'controller' => 'Root', 'action' => 'index' }, 'path' => '/', 'conditions' => { 'method' => 'GET' } }, 'HTTP::Router::Route' );

Код: Выделить всё

my $match = $router->match('/see/');
$match->params;  # { controller => 'Root', action => 'index' }

разницу видно?
что в объекте $route есть, а в $router ( $match ) скорее всего нету...

попробуйте так:

Код: Выделить всё

 $route->params;
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение ProFTP » 2010-02-24 0:27:52

Darwent писал(а):

Код: Выделить всё

my $match = $router->match('/');
Всё равно та же ошибка
потому что &match скорее всего возвращает не объект, а какие-то просто данные...

$match это объект?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

perlmonks.org.ru
проходил мимо

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение perlmonks.org.ru » 2010-02-24 16:34:40

use Any::Moose;
use Any::Moose 'X::AttributeHelpers';
use Hash::AsObject;
use List::MoreUtils 'part';
use HTTP::Router::Route;

НА мус запилена эта либа - так что проверь валидно ли у тебя установлены все эти модули.
По идее идет наследование класса в match, так что $match должен вызывать методы $route.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: [PERL] помогите найти ошибку в работе с HTTP::Router

Непрочитанное сообщение ProFTP » 2010-03-04 11:46:19

Код: Выделить всё

sub match {
    my $self = shift;
    my $req  = blessed $_[0] ? $_[0] : Hash::AsObject->new(path => $_[0], %{ $_[1] || {} });

    if ($self->use_inline_match) {
        return $self->inline_matcher->($req);
    }
    else {
        for my $route ($self->routes) {
            my $match = $route->match($req) or next;
            return $match;
        }

        return;
    }
}
если я ничего не перепутал то вот этот match, и он может возвратить не объект... тут кстате, нету "Обработки исключений" ошибки могут быть разные
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение