【问题标题】:What "ladder sub {...}" means in perl?perl 中的“ladder sub {...}”是什么意思?
【发布时间】:2018-10-31 17:21:16
【问题描述】:

我正在阅读tweetylicious source from github 来研究 Mojolicious 框架:

但是我对下面的代码ladder sub ... 感到困惑。在 Perl 中是什么意思?它看起来不像常规的 Perl 语法。

顺便说一句,我使用的是 Strawberry Perl 5。

# The rest of the routes are specific to logged in users, so we
# add a ladder to make sure (instead of making sure inside each route)
ladder sub {
    my $self = shift;
    return 1 if $self->session('name');
    $self->redirect_to('/login') and return;
};

【问题讨论】:

    标签: perl mojolicious


    【解决方案1】:

    这是对名为ladder 的子例程的调用,它需要一个代码引用作为它的第一个参数。相当于

    $tmpfunc = sub {
        my $self = shift;
        return 1 if $self->session('name');
        $self->redirect_to('/login') and return;
    };
    ladder($tmpfunc);
    

    【讨论】:

    • 感谢您的回答。但是我如何修复编译错误?我尝试将其更改为示例样式,但随后被 cgi.pm 阻止:has description => 'Start application with CGI';有用法 => sub { shift->extract_usage };
    • @Hao 您正在查看的代码是 2011 年的。Mojolicious 项目非常活跃,API 经常更改。我搜索了 github 存储库,我只能找到两个对 ladder 的引用,它是在 2010 年添加的。它已被删除,但更改日志没有显示何时。我认为你应该寻找更现代的例子。
    • @simbabque 知道了。感谢您的宝贵时间。
    • @Hao 我去了 IRC 并在 #mojolicious 中提问。该项目的创建者说它可能在 2010 年 1.0 版之前就已经发布了。所以我会说可以安全地假设我们今天不应该使用它。现代的等价物称为under,顺便说一句。
    • @Hao 谢谢。我们都只是这里的人。我希望你在学习 Perl 时玩得开心,尽管你现在正在经历一些挫折! :)
    猜你喜欢
    • 2018-03-05
    • 2010-12-28
    • 2023-03-25
    • 2020-05-21
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多