我們正在自定義請求跟蹤器(RT)票務工具。我們想要在RT::Users
的SimpleSearch
子例程中返回一些額外的過濾器。Perl Hook :: LexWrap無法在後包裝方法中訪問返回值
以下Hook :: Lexwrap代碼我們已經寫入來訪問返回值和上述子例程的參數。
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;
以下是輸出:
訪問返回值這裏(/opt/requestTracker/sbin/../local/lib/RT/Users_Local。 pm:6)
我無法理解爲什麼$ _ [ - 1]中存在空值。
以下是http://search.cpan.org/~ether/Hook-LexWrap-0.25/lib/Hook/LexWrap.pm
「報價在-包裝後的文本,$ _ [ - 1]包含由包裹子程序產生的返回值 在一個標量返回 背景下,這個值。在 列表返回上下文中,該值是對返回值數組 的引用。$ _ [ - 1]可能被分配給 後封裝器,並且這會相應地更改返回值 「。
如何從原始子程序訪問返回值?任何幫助表示讚賞。謝謝
謝謝。將調用子例程返回的值分配給調用者子例程中的一個變量解析它。 – lazilyInitialised