在perl cgi中使用(/)除法运算符时出错?
我正在使用以下函数来计算天数. setAge函数的参数是epoc时间.
sub getAge { my $diff; my $age=0; my $sec=86400; my $createTime; my $currTime; $createTime = $_[0]; $currTime = UnixDate("now","%s"); $diff = ($currTime - $createTime); $age =(($diff-($diff%$sec))/$sec); return $age; } 但每当我使用除法运算符时,我得到以下错误 syntax error at /apollo/env/ShiftReport/server-root/gcShiftReport.cgi line 616,near ") {" syntax error at /apollo/env/ShiftReport/server-root/gcShiftReport.cgi line 618,near "case 'OX-Gift-Hyderabad'" Execution of /apollo/env/ShiftReport/server-root/gcShiftReport.cgi aborted due to compilation errors. 错误行来自紧随其后的函数定义. sub getName { my $tempName = $_[0]; switch ($tempName) { case 'Cart Software' { return 'CART' } case 'OX-Gift-Hyderabad' { return 'Gift' } else { return $_[0]} } } 有人可以指出为什么会发生这种情况并且仅在我使用除法(/)运算符时. 解决方法
如评论中所述,您使用的是已弃用的
Switch模块.您可能忘记添加使用Switch,因此不会导入switch关键字.如果你想要这个功能,你应该使用使用功能qw(switch),它使用给定的关键字,when和default.
您的错误消息 – 相当模糊 – 来自perl而不处理switch($variable){…}作为有效语句.编译器认为它看到一个函数,因为裸字切换后跟parens,但是下面的块{…}会导致错误. 这与它之前的代码无关,如果我添加使用Switch,代码适用于我. 如果对此代码使用此特定功能是一个不错的选择,那么这是值得商榷的. use feature qw(switch); sub getName { my $tempName = $_[0]; given ($tempName) { when ('Cart Software') { return 'CART' } when ('OX-Gift-Hyderabad') { return 'Gift' } default { return $_[0]} } } 相当于,不依赖于开关: sub getName { my $name = shift; return "CART" if $name eq "Cart Software"; return "Gift" if $name eq "OX-Gift-Hyderabad"; return $name; } 我认为这是更可取的,因为更清楚哪种类型的比较. ETA:您的子程序getAge可以更有效地编写.我冒昧地删除你的随机资本,因为它们是邪恶的,而perl确实区分了aFunctionForGettingStuff和aFunctionForgettingStuff. 我看到你正在使用某种自制方式截断浮子.这不是必需的,因为perl确实有一个内置函数来执行该操作:int() sub getage { my $createtime = shift; # shift first argument off @_ my $sec = 86400; # use int() instead of removing remainder my $age = int((UnixDate("now","%s") - $createtime) / $sec); return $age; } 没有必要将语句堆叠成一个,但我认为删除尽可能多的转换变量是个好主意.但是,我认为有必要 – 从可读性的角度和良好的实践 – 在实际使用变量之前不要声明变量.这样,当你阅读代码并看到我的$foo = …你知道$foo被声明并分配到那里. 你甚至可以删除$age变量,但我觉得它确实增加了可读性以留下它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |