[Catalyst] sub default :Private versus sub xxx :Path

Ash Berlin ash at cpan.org
Tue Jul 11 17:35:37 CEST 2006


John Napiorkowski wrote:
> With Catalyst we now have three ways to hook an action to the package namespace (That I know of)
>
> package myapp::Controller::demo
>
> 1) sub default :Private {...}
> 2) sub index :Private {...}
> 3) sub xxxxx :Path {...}
>
> All the above match /demo and 1,3 match /demo/arg1/arg2, etc while 2 doesn't.
>
> Now I know from the documentation that the primary function difference are in execution precedence 
> and in the way they capture arguments.  I can see an advantage to the sub xxxx :Path way over sub default
> because this way I can give my root actions a meaningful private name.  However I was wondering what
> other reasons might people use sub xxxx :Path over sub default?  I'm just trying to put together a best
> practices guide for new developers and this one I've been scratching my head over. Maybe we haven't figured 
> out the best way to use all these great new features yet but I just wanted to here what other people thought.
>
> -john
>
>
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/
>   
All for /controller/foo/bar

sub default : Private {
    my ($self, $c, @args) = @_;
    # args = qw/controller foo bar/

}

sub xxxx : Path {
    my ($self, $c, @args) = @_;
    # args = qw/foo bar/;
}

I personally only use default for 404 handlers.

Also you should take a look at the :Chained attribute.

Ash




More information about the Catalyst mailing list