The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Path::Dispatcher::Cookbook - A cookbook for Path::Dispatcher

RECIPES

How can I change the path delimiter from a space ' ' to a slash '/'?

When importing the Path::Dispatcher::Declarative sugar, specify the token_delimiter option for the default group.

    package My::Dispatcher;
    use Path::Dispatcher::Declarative -base, -default => {
        token_delimiter => '/',
    };

Or define a subclass of Path::Dispatcher::Declarative with a token_delimiter method:

    package Web::Dispatcher;
    use base 'Path::Dispatcher::Declarative';
    
    use constant token_delimiter => '/';
    
    
    package My::Other::Dispatcher;
    use Web::Dispatcher -base;

How can I do rule chaining (like in Catalyst)?

You can use a chain rule approximate chaining behavior:

    package MyDispatcher;
    use Path::Dispatcher::Declarative -base;

    under show => sub {
        chain {
            print "Displaying ";
        };
        on inventory => sub {
            print "inventory:\n";
            ...
        };
        on score => sub {
            print "score:\n";
            ...
        };
    };

    package main;

    MyDispatcher->run("show inventory"); # "Displaying inventory:\n ..."

    MyDispatcher->run("show score"); # "Displaying score:\n ..."