use strict; use warnings; use Test::More; use Path::Dispatcher; my (@matches, @calls); my $dispatcher = Path::Dispatcher->new; $dispatcher->add_rule( Path::Dispatcher::Rule::CodeRef->new( matcher => sub { push @matches, $_; length > 5 ? {} : 0 }, block => sub { my $match = shift; push @calls, [@_] }, ), ); $dispatcher->run('foobar'); is_deeply([splice @matches], ['foobar']); is_deeply([splice @calls], [ [] ]); $dispatcher->run('other'); is($matches[0]->path, 'other'); done_testing;