我需要能够在 Mojolicious::Lite 应用程序中编写和调用我自己的子例程。但是,执行此操作的直观方法似乎不起作用。我给一个比我有更多 Mojolicious 经验的同事发了电子邮件,他给我发了以下代码:
#!/usr/bin/env perl
use Mojolicious::Lite;
# Documentation browser under "/perldoc"
plugin 'PODRenderer';
get '/' => sub {
my $self = shift;
$self->render('index');
};
sub factorial {
my $n = shift;
return $n ? $n * factorial($n - 1) : 1;
}
app->start;
__DATA__
@@ index.html.ep
% layout 'default';
% title 'Welcome';
Welcome to the Mojolicious real-time web framework!
Five factorial: <%= main::factorial(5) %>
@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
<head><title><%= title %></title></head>
<body><%= content %></body>
</html>
但是当我运行它时,它告诉我当我调用一个未定义的子例程时:
未定义的子例程 &main::factorial 在模板 index.html.ep 处调用,来自 DATA 部分第 5 行,第 32 行。
我花了很多时间处理这段代码,并尝试了不同的方法来让它工作,但到目前为止,唯一让它正常运行的是当子例程在@@ xxx.html 的范围内定义时。 ep的。我已经在 stackoverflow 上搜索/搜索了“Mojolicious::Lite 中的用户定义子例程”和其他类似查询。似乎什么都没有出现。我对文档的搜索也被证明是徒劳的。这似乎应该是一个简单的任务,但我有点卡住了。任何帮助,将不胜感激。