1use strict; 2use warnings; 3use Router::Simple::Declare; 4 5my $path = shift @ARGV || '/account/login'; 6 7my $rs = router { 8 # path and params 9 connect '/' => { controller => 'Root', action => 'index' }; 10 11 # path, conditions, and params 12 connect '/home', { controller => 'Home', action => 'show' }, { method => 'GET' }; 13 connect '/date/{year:\d{4}}', 14 { controller => 'Date', action => 'by_year' }; 15 16 # path, params, and nesting 17 submapper('/account', { controller => 'Account' }) 18 ->connect('/login', {action => 'login'}) 19 ->connect('/logout', {action => 'logout'}); 20 21 # path nesting 22 submapper('/account') 23 ->connect('/signup', {controller => 'User', action => 'register'}) 24 ->connect('/logout', {controller => 'Account', action => 'logout'}); 25 26 # conditions nesting 27 submapper('/', {}, { method => 'GET' }) 28 ->connect('/search' => {controller => 'Items', action => 'search'}) 29 ->connect('/tags' => {controller => 'Tags', action => 'index'}); 30 31 # params nesting 32 submapper('/', { 'controller' => 'Account' }) 33 ->connect('/login', {action => 'login'}) 34 ->connect('/logout', {action => 'logout'}) 35 ->connect('/signup', {action => 'signup'}); 36 37 # match only 38 connect '/{controller}/{action}/{id}.{format}'; 39 connect '/{controller}/{action}/{id}'; 40}; 41 42for my $i (0..10000) { 43 $rs->match($path); 44} 45 46