如何捕获Perl中鲤鱼的输出?
发布时间:2020-12-15 21:27:33 所属栏目:大数据 来源:网络整理
导读:我正在编写一个Perl模块,我正在使用鲤鱼向调用程序发出非致命警告. 鲤鱼警告工作正常 – 我正在检查输入参数是否满足特定条件 – 如果不符合条件,则会发出鲤鱼警告,模块继续使用参数的默认值,而不是调用程序通过.该警告只是通知正在使用默认参数,而不是传入
我正在编写一个Perl模块,我正在使用鲤鱼向调用程序发出非致命警告.
鲤鱼警告工作正常 – 我正在检查输入参数是否满足特定条件 – 如果不符合条件,则会发出鲤鱼警告,模块继续使用参数的默认值,而不是调用程序通过.该警告只是通知正在使用默认参数,而不是传入的参数. 我的问题是我的测试脚本.我的测试脚本将错误的参数发送到模块,我正在尝试捕获回来的警告消息,并确保我收到了正确的警告消息. 我的模块看起来像这样: else { carp "value must be numeric - using default value"; } 我的测试脚本如下所示: eval { #call to my module }; like ( $@,qr/value must be numeric/,"Should abort on non-numeric value" ); 当我运行测试时,我可以在屏幕上看到警告(它必须去STDERR),但$@变量的内容是” – 空白. 这是我测试脚本的输出: t/04bad_method_calls....ok 10/12value must be numeric - using default value at ... # Failed test 'Should abort on non-numeric value' # at t/04bad_method_calls.t line 98. t/04bad_method_calls....NOK 12 # '' doesn't match '(?-xism:value must be numeric)' # Looks like you failed 1 test of 12. 如果我将鲤鱼变成呱呱呱呱呱呱呱呱呱呱呱呱呱呱.,…….. – – – ………………. 说实话,我没有对eval的最好的了解 – 也许这不是捕捉鲤鱼警告输出的最佳方法.我尝试使用$SIG {WARN},但也是空的. 有没有办法捕捉鲤鱼的输出?这不是最大的事情,因为这只是我的测试脚本,但我仍然希望让我的测试脚本正常工作. 提前致谢! 解决方法
从这个页面,http://perldoc.perl.org/perlvar.html,看起来你想要将本地$SIG {__ WARN__}设置为一个子程序,这将会将警告转换为测试脚本的致命错误.他们给出的例子是:
local $SIG{__WARN__} = sub { die $_[0] }; eval $proggie; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |