#!/usr/bin/perl -- BEGIN{$ENV{PATH_ROUTER_DEBUG}=999;} use Path::Router; use Path::Router::Shell; my $router = Path::Router->new; $router->add_route( '/api/action.:format' ); $router->add_route( '/ro/sham/:bo' ); Path::Router::Shell->new(router => $router )->shell; __END__ /ro/sham/json Attempting to match /api/action.:format against ro/sham/json regexp is (?:api(?:\/action.:format)) ... LENGTH DID NOT MATCH Attempting to match /ro/sham/:bo against ro/sham/json regexp is (?:ro(?:\/sham(?:\/([^\/]+)))) match success $VAR1 = bless( { 'mapping' => { 'bo' => 'json' }, 'route' => bless( { 'validations' => {}, 'components' => [ 'ro', 'sham', ':bo' ], 'defaults' => {}, 'path' => '/ro/sham/:bo' }, 'Path::Router::Route' ), 'path' => 'ro/sham/json' }, 'Path::Router::Route::Match' ); #### #!/usr/bin/perl -- BEGIN{$ENV{PATH_ROUTER_DEBUG}=999;} use Path::Router; use Path::Router::Shell; use Data::Dump qw/ dd pp /; my $router = Path::Router->new; $router->add_route( '/api/action.:format' ); $router->add_route( '/ro/sham/:bo' ); my $route = '/ro/sham/json'; dd( $route => scalar( $router->match( $route ) ) ); dd( $router ); __END__ Attempting to match /api/action.:format against ro/sham/json regexp is (?:api(?:\/action.:format)) Attempting to match /ro/sham/:bo against ro/sham/json regexp is (?:ro(?:\/sham(?:\/([^\/]+)))) match success ( "/ro/sham/json", bless({ mapping => { bo => "json" }, path => "ro/sham/json", route => bless({ components => ["ro", "sham", ":bo"], defaults => {}, path => "/ro/sham/:bo", validations => {}, }, "Path::Router::Route"), }, "Path::Router::Route::Match"), ) bless({ inline => 1, match_code => sub { ... }, route_class => "Path::Router::Route", routes => [ bless({ components => ["api", "action.:format"], defaults => {}, path => "/api/action.:format", validations => {}, }, "Path::Router::Route"), bless({ components => ["ro", "sham", ":bo"], defaults => {}, path => "/ro/sham/:bo", validations => {}, }, "Path::Router::Route"), ], }, "Path::Router") #### #!/usr/bin/perl -- BEGIN{$ENV{PATH_ROUTER_DEBUG}=999;} use Path::Router; use Data::Dump qw/ dd pp /; my $router = Path::Router->new; push @{ $router->{routes} }, bless({ components => ["a", "b.", ":c"], defaults => {}, path => "/a/b.:c", validations => { c}, }, "Path::Router::Route"); my $route = 'a/b.json'; dd( $route => scalar( $router->match( $route ) ) ); __END__ Attempting to match /a/b.:c against a/b.json regexp is (?:a(?:\/b.(?:\/([^\/]+)))) match failed ("a/b.json", undef)