這是從CPAN複製的子例程。它在我從命令行運行時正常工作。我有一個類似於Net :: Traceroute的函數,它也可以正常工作,並允許我用SOAP調用返回字符串。當我嘗試使用SOAP調用從下面的函數返回〜字符串(?)時,問題就出現了。Perl,Net :: Traceroute :: PurePerl返回值
sub tr {
use Net::Traceroute::PurePerl;
my $t = new Net::Traceroute::PurePerl(
backend => 'PurePerl', # this optional
host => 'www.whatever.com',
debug => 0,
max_ttl => 30,
query_timeout => 2,
packetlen => 40,
protocol => 'udp', # Or icmp
);
$t->traceroute;
return $t;
}
輸出類似於除了字符串的最後部分的字符串看起來是這樣的:
28 * * *
29 * * *
30 * * *
Net::Traceroute::PurePerl=HASH(0x11fa6bf0)
我不知道什麼是有關Net ::路由跟蹤:: PurePerl贏得」不同允許我使用SOAP返回值,因爲Net :: Traceroute版本允許我使用SOAP返回值。
編輯: 要調試,我只是編輯的最後幾行是這樣的:
#$t->traceroute;
#return $t;
$foo = "test";
return $foo;
注意它返回 「測試」 throught SOAP調用。但是,如果我取消註釋$t->traceroute;
,那麼SOAP調用中斷將返回。客戶端無法通過SOAP調用返回。
'pretty_print'方法將跟蹤轉儲到標準輸出,您的'返回$ t'返回一個正在被串化的祝福哈希。你是否想要返回'pretty_print'輸出? –
pretty_print從服務器版本中刪除。我剛剛編輯了問題以反映當前版本。同樣的問題仍然存在。 –
但是你試圖返回跟蹤字符串或整個對象? –