Perl 什么';Catalyst中:Args和:CaptureArgs的区别是什么?

Perl 什么';Catalyst中:Args和:CaptureArgs的区别是什么?,perl,catalyst,Perl,Catalyst,我通常可以通过随机尝试这两个选项的不同排列来获得我想要的行为,但我仍然不能说我确切地知道它们是做什么的。是否有一个具体的例子来说明差异?:CaptureArgs(N)如果至少还有N个参数,则匹配。它用于非终端链接处理程序 :Args(N)仅当只剩下N个Args时匹配 比如说, sub catalog : Chained : CaptureArgs(1) { my ( $self, $c, $arg ) = @_; ... } sub item : Chained('catalo

我通常可以通过随机尝试这两个选项的不同排列来获得我想要的行为,但我仍然不能说我确切地知道它们是做什么的。是否有一个具体的例子来说明差异?

:CaptureArgs(N)
如果至少还有N个参数,则匹配。它用于非终端链接处理程序

:Args(N)
仅当只剩下N个Args时匹配

比如说,

sub catalog : Chained : CaptureArgs(1) {
    my ( $self, $c, $arg ) = @_;
    ...
}

sub item : Chained('catalog') : Args(2) {
    my ( $self, $c, $arg1, $arg2 ) = @_;
    ...
}
火柴

/catalog/*/item/*/*

CaptureArgs
用于Catalyst中的链接方法

Args
标记链接方法的结束

例如:

sub base_method : Chained('/') :PathPart("account")  :CaptureArgs(0)
{

}
sub after_base : Chained('base_method') :PathPart("org") :CaptureArgs(2)
{

}
sub base_end : Chained('after_base') :PathPart("edit")  :Args(1)
{

}
以上链接方法匹配
/account/org/*/*/*/edit/*

这里的
base\u end
是链的结束方法。要标记链操作的结束,使用
Args
。如果使用
CaptureArgs
,则表示链仍在继续

Args
也用于catalyst的其他方法中,用于指定方法的参数

同样来自cpan:

The endpoint of the chain specifies how many arguments it
 gets through the Args attribute. :Args(0) would be none at all,
 :Args without an integer would be unlimited. The path parts that 
aren't endpoints are using CaptureArgs to specify how many parameters
 they expect to receive.