Shawn M Moore
and 1 contributors


Path::Dispatcher::Rule::Tokens - predicate is a list of tokens


    my $rule = Path::Dispatcher::Rule::Tokens->new(
        tokens    => [ "comment", "show", qr/^\d+$/ ],
        delimiter => '/',
        block     => sub { display_comment(shift->pos(3)) },



Rules of this class use a list of tokens to match the path.



Each token can be a literal string, a regular expression, or a list of either (which are taken to mean alternations). For example, the tokens:

    [ 'ticket', [ 'show', 'display' ], [ qr/^\d+$/, qr/^#\w{3}/ ] ]

first matches "ticket". Then, the next token must be "show" or "display". The final token must be a number or a pound sign followed by three word characters.

The results are the tokens in the original string, as they were matched. If you have three tokens, then match->pos(1) will be the string's first token ("ticket"), match->pos(2) its second ("display"), and match->pos(3) its third ("#AAA").

Capture groups inside a regex token are completely ignored.


A string that is used to tokenize the path. The delimiter must be a string because prefix matches use join on unmatched tokens to return the leftover path. In the future this may be extended to support having a regex delimiter.

The default is a space, but if you're matching URLs you probably want to change this to a slash.


Decide whether the rule matching is case sensitive. Default is 1, case sensitive matching.