gpt4 book ai didi

perl - 为什么我的 perl Catalyst redirect_and_detach 替换插件方法失败?

转载 作者:行者123 更新时间:2023-12-05 07:11:00 25 4
gpt4 key购买 nike

寻求帮助找出一个难倒的错误。

我创建了一个 perl Catalyst 插件,旨在为 Catalyst 5.90115 的 redirect_and_detach ($c->redirect_and_detach) 提供一种直接替换方法。我的替换方法只调用 Catalyst 的 redirect_and_detach:

package MyApp::Catalyst::Plugin::Logger;
...

sub my_redirect_and_detach {
my ($c, $uri, $status) = @_;

$c->redirect_and_detach($uri, $status);
}

我意识到这没有任何值(value),我只是在测试让这个简单的案例首先起作用。

然后我替换这个工作调用...

$c->redirect_and_detach($someuri);

通过调用我的新插件方法...

$c->my_redirect_and_detach($someuri);

我得到以下(缩写/混淆)错误:

Parameter #2 (undef) to Catalyst::Plugin::RedirectAndDetach::redirect_and_detach was an 'undef', which is not one of the allowed types: scalar
at /usr/local/share/perl/5.26.1/Catalyst/Plugin/RedirectAndDetach.pm line 18.
Catalyst::Plugin::RedirectAndDetach::redirect_and_detach(undef, "/myuri", undef) called at /var/app/lib/MyApp/Catalyst/Plugin/Logger.pm line 95
MyApp::Catalyst::Plugin::Logger::my_redirect_and_detach(MyApp=HASH(0x5628f93e4e60), "/myuri") called at ...

我了解 Catalyst 方法规范要求定义参数 #2。但我不明白为什么堆栈跟踪显示第一个参数为 undef(认为那是 $c 的类/包)。我验证了 $c 作为第一个参数成功传递,并在 my_redirect_and_detatch() 内部工作以提取请求参数。

有人看到这个问题吗?

提前致谢。

最佳答案

结果是 Catalyst 的 redirect_and_attach(),而 $status 如果未提供则默认为 undef,不喜欢实际的 undef $status 参数。解决方案是避免传递未定义的 $status。

关于perl - 为什么我的 perl Catalyst redirect_and_detach 替换插件方法失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60961689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com