perl 是用 eval 实现异常处理

            $in = "20080230100000" ; # error

            $mon=substr($in,4,2); 
            $day=substr($in,6,2); 
            $mon++;$mon--; 
            $day++;$day--; 
            $year = substr($in,0,4);
            $hour = substr($in,8,2);
            $min = substr($in,10,2);
            $sec = substr($in,12,2);

            eval
            {
                use Time::Local;
                $dtime = $in;
                $unix_dt = timelocal (substr($dtime,12,2),substr($dtime,10,2),substr($dtime,8,2),substr($dtime,6,2),substr($dtime,4,2)-1,substr($dtime,0,4)-1900) ;
                ($se,$mi,$ho,$md,$mo,$ye,$wday,$yday,$isdst) =    localtime ($unix_dt);
                if((($ye+1900) eq $year) && (($mo+1) eq $mon) && ($md eq $day) && ($ho eq $hour) && ($mi eq $min) && ($se eq $sec) )
                {
                    $out = $year . "-" . $mon . "-" . $day . " " . $hour .":" . $min .":" . $sec;
                }
            };
            if($@)
            {
                return "";
            }

 

eval可以在运行时构造代码并运行,如果运行的代码有致命错误,则eval退出,但是整个程序不会退出。退出后通过判断 $@ 可以知道是否出错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值