免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2540 | 回复: 4

请问Perl中怎样捕获warning [复制链接]

论坛徽章:
0
发表于 2008-02-15 11:46 |显示全部楼层
有一批文件是euc-jp编码的,现在想把它转化成utf8编码的,
但是由于原来的某些文件中有乱码,所以会出现warning。

例如:
L123:   print OUT <IN>;
euc-jp "\x86" does not map to Unicode at ./sbin/euc2utf8.pl line 123, <IN> line 766.
euc-jp "\xA7" does not map to Unicode at ./sbin/euc2utf8.pl line 123, <IN> line 766.

由于是批量转换,所以想提示一下是哪个文件有问题。
问题就是怎样能捕获123行抛出的warning。

Perl中有没有类似$!或$@的可以记录warning的特殊变量啊,
或者其他能捕获warning的方法啊。

请达人们帮帮忙了,谢谢!

论坛徽章:
0
发表于 2008-02-15 19:18 |显示全部楼层
perldoc -f warn
No message is printed if there is a $SIG{__WARN__} handler
               installed.  It is the handler’s responsibility to deal with the
               message as it sees fit (like, for instance, converting it into
               a "die").  Most handlers must therefore make arrangements to
               actually display the warnings that they are not prepared to
               deal with, by calling "warn" again in the handler.  Note that
               this is quite safe and will not produce an endless loop, since
               "__WARN__" hooks are not called from inside one.


可以用$SIG{__WARN__} handler来捕获

论坛徽章:
0
发表于 2008-02-19 15:23 |显示全部楼层
3x churchmice.

问题终于解决了,

my $orig_sigwarn = $SIG{__WARN__};
local $SIG{__WARN__} = sub {
                #TODO something
                };

最后把值再还原就OK了。
再次感谢churchmice。

论坛徽章:
0
发表于 2009-04-16 16:48 |显示全部楼层
请问lz解决这个问题了么? 我也遇到了相同的问题,可否找您探讨一下,我的邮箱是: wutao0520@163.com.
谢谢您!

论坛徽章:
0
发表于 2009-04-16 17:38 |显示全部楼层
发错地方。。。。lz可以忽略
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP