Гость писал(а):
То есть, чтобы оно работало надо после (?:regex) поставить ? или *(ну или {...}).
да, спасибо, забыл отписатся, нашел что со всем забыл про "знак вопроса", число совпадений...
мне приходилось только или парсить и вытаскивать, или искать, или заменять всегда....
я делал только то что мне надо было, надо будет какие-то практически задачки порешать, чтобы знать, чтоли...?
хотя, в perl5.10 очень много всего добавили...
zg писал(а):ProFTP писал(а):/^wiki\/(\d+)(?:\/(\d+))\/page_co\/(\d+)$/;
а не проще по слешам разбить?

и из массива взять нужные занчения
лучше, но тут надо написать регулярное выражение в атрибут метода класса (чтобы данный метод загрузился когда идет такая url в событиях во фремворке Catalyst), там именно так и сделано, оно идет потом в массив...
@$c->req->captures
вроде бы работает
Код: Выделить всё
sub wiki_page_co : Regex('^wiki\/(\d+)(?:\/(\d+))?\/page_co\/(\d+)$') {
my ( $self, $c ) = @_;
$c->stash->{ page_co } = 1;
# use Data::Dumper;
# print Dumper($c->req->captures);
# print $c->req->captures->[2] if (!$c->req->captures->[1]);
$c->forward( 'wiki', [ !$c->req->captures->[1]
? $c->req->captures->[0]
: @{$c->req->captures}[0..2] ] );
}