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变量,但我觉得它确实增加了可读性以留下它.
总结以上是内存溢出为你收集整理的在perl cgi中使用(/)除法运算符时出错?全部内容,希望文章能够帮你解决在perl cgi中使用(/)除法运算符时出错?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)