【发布时间】:2012-03-12 23:56:40
【问题描述】:
我正在使用以下函数来计算天数。 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;
}
但是每当我使用除法运算符时,我都会收到以下错误
/apollo/env/ShiftReport/server-root/gcShiftReport.cgi 第 616 行的语法错误,靠近 ")
{"
/apollo/env/ShiftReport/server-root/gcShiftReport.cgi 第 618 行,“case 'OX-Gift-Hyderabad'”附近的语法错误
/apollo/env/ShiftReport/server-root/gcShiftReport.cgi 的执行由于编译错误而中止。
错误行来自紧随其后的函数定义。
sub getName {
my $tempName = $_[0];
switch ($tempName)
{
case 'Cart Software' { return 'CART' }
case 'OX-Gift-Hyderabad' { return 'Gift' }
else { return $_[0]}
}
}
有人可以指出为什么会发生这种情况,并且只有在我使用除法 (/) 运算符时。
【问题讨论】:
-
所以将
/更改为*并且什么都不改变 -- 会发生什么?还是觉得跟运营商有关?还有...空格,请:( -
我将 / 更改为 * 并且它正在工作
$age =(($diff - ($diff%$sec)) * $sec); -
这……很奇怪。好吧,你激发了我的 +1 兴趣。
-
如果要进行日期数学运算,请使用 DateTime 等模块。您不会遇到今天(至少在美国所有日子)会造成的这种语法错误或数学错误。