perl Carp模块中的无限循环
发布时间:2020-12-16 06:12:49 所属栏目:大数据 来源:网络整理
导读:我们有一些代码捕获异常,记录消息然后调用Carp :: longmess来获取堆栈跟踪. 因此,我们正在做的简化视图是: eval { some SOAP::Lite stuff };if( my $err = $@ ){ logwrite( "Caught Error: $err" );} logwrite函数基本上是: sub logwrite($){ my $msg = $_
我们有一些代码捕获异常,记录消息然后调用Carp :: longmess来获取堆栈跟踪.
因此,我们正在做的简化视图是: eval { <some SOAP::Lite stuff> }; if( my $err = $@ ) { logwrite( "Caught Error: $err" ); } logwrite函数基本上是: sub logwrite($) { my $msg = $_[0]; my($pkg,$fil,$lin)=caller; my $timestamp = POSIX::strftime(...); print STDERR "$timestamp $fil/$lin $msgn"; print STDERR "$timestamp $fil/$lin Stack trace:n" . Carp::longmess . "n"; } 但在日志中我看到: 20111030 Module.pm/42 Caught Error: at line Use of uninitialized value in caller at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 22. Use of uninitialized value in string eq at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 91. Use of uninitialized value in numeric lt (<) at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 200. Use of uninitialized value in pattern match (m//) at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 55. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 55. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 142. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 142. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 142. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/5.8.8/Carp/Heavy.pm line 142. ... 来自Carp / Heavy.pm模块的那一系列警告一再重复地重复,吹灭了logifle.所以我们最终将其杀掉了.这些警告看起来像是通过调用Carp :: longmess触发的.另一个有趣的事情是$@变量似乎只是在.它由at添加,但没有实际的错误消息或行号. 有没有人见过这个或者知道什么是鲤鱼包?这是罕见的,但在过去一个月左右发生了几次,我们每天都有数百个这样的工作. 解决方法
我意识到这不能回答你的实际问题,但是. . .因为显然$味精EQ“在行”在这种情况下,也许你应该只是“在行”黏合除非$味精EQ到打印…鲤鱼:: longmess …语句结束绕过这个问题? (我的意思是,除非有人提出真正的解决方案.)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |