免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2517 | 回复: 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可以忽略
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP