Perl Hook::LexWrap 无法访问 post 包装器方法中的 return 值
Perl Hook::LexWrap Unable to access return value in post wrapper method
我们正在定制请求跟踪器 (RT) 工单工具。我们想在 RT::Users
.
中的 SimpleSearch
子例程 returned 值中添加某些额外的过滤器
按照我们编写的 Hook::Lexwrap 代码访问 return 值和上述子例程的参数。
Users_Local.pm
package RT::Users;
use strict;
use Hook::LexWrap;
wrap 'SimpleSearch' =>
post=> sub {
RT::Logger->info("accessing return value here $_[-1]");
RT::Logger->info("I got the arguments in post: [@_]");
},
;
1;
输出如下:
在此处访问 return 值 (/opt/requestTracker/sbin/../local/lib/RT/Users_Local.pm:6)
我无法理解为什么 $_[-1] 中存在空值。
以下是引用自http://search.cpan.org/~ether/Hook-LexWrap-0.25/lib/Hook/LexWrap.pm
的文字
"在 post-wrapper 中,$_[-1] 包含 return 值
由包装的子程序产生。在标量中 return
上下文中,此值是标量 return 值。在一个
list return 上下文,这个值是对
return 个值的数组。 $_[-1] 可以分配给
post-wrapper,这会相应地更改 return 值 。"
如何从原始子程序访问 return 值?任何帮助表示赞赏。谢谢
我测试了来自 Hook::LexWrap perldoc 的示例代码,发现仅当在 void 上下文中调用包装子例程时 $_[-1] 才未定义。
因此,请确保将子例程中的 return 值分配给某个变量。
我们正在定制请求跟踪器 (RT) 工单工具。我们想在 RT::Users
.
SimpleSearch
子例程 returned 值中添加某些额外的过滤器
按照我们编写的 Hook::Lexwrap 代码访问 return 值和上述子例程的参数。
Users_Local.pm
package RT::Users;
use strict;
use Hook::LexWrap;
wrap 'SimpleSearch' =>
post=> sub {
RT::Logger->info("accessing return value here $_[-1]");
RT::Logger->info("I got the arguments in post: [@_]");
},
;
1;
输出如下:
在此处访问 return 值 (/opt/requestTracker/sbin/../local/lib/RT/Users_Local.pm:6)
我无法理解为什么 $_[-1] 中存在空值。
以下是引用自http://search.cpan.org/~ether/Hook-LexWrap-0.25/lib/Hook/LexWrap.pm
的文字"在 post-wrapper 中,$_[-1] 包含 return 值 由包装的子程序产生。在标量中 return 上下文中,此值是标量 return 值。在一个 list return 上下文,这个值是对 return 个值的数组。 $_[-1] 可以分配给 post-wrapper,这会相应地更改 return 值 。"
如何从原始子程序访问 return 值?任何帮助表示赞赏。谢谢
我测试了来自 Hook::LexWrap perldoc 的示例代码,发现仅当在 void 上下文中调用包装子例程时 $_[-1] 才未定义。 因此,请确保将子例程中的 return 值分配给某个变量。