如何将调用参数($ self)委托给其他方法

时间:2011-06-15 13:49:18

标签: perl mojo mojolicious

我正在学习mojolicious :: lite。

在路由器中,将参数委托给控制器,使用此代码确定:

get '/hello/:name' => sub {
  my $self = shift;
  ControllerTest::hello($self);
  };

是否有任何简易方法,例如:

get '/hello/:name' => ControllerTest::hello( shift ); #this code not work

感谢。

2 个答案:

答案 0 :(得分:5)

免责声明:我不是一个愚蠢的黑客:)

这不起作用,因为'shift'从当前上下文(来自@_)中提取数据。我猜最短(短手)将是:

get '/hello/:name' => sub { ControllerTest::hello( shift ); };

或者可能使用子参考:

get '/hello/:name' => \&ControllerTest::hello

然后传递给hello的第一个参数将是传递给所使用的匿名子的所有args。我没试过,但我怀疑它会起作用:)

答案 1 :(得分:1)

我认为您应该可以使用完全限定名称直接将其称为方法,例如

get '/hello/:name' => sub { $self->ControllerTest::hello(); };