现在的位置: 首页 > 综合 > 正文

perl 是用 eval 实现异常处理

2018年02月11日 ⁄ 综合 ⁄ 共 915字 ⁄ 字号 评论关闭

            $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退出,但是整个程序不会退出。退出后通过判断 $@ 可以知道是否出错

抱歉!评论已关闭.