不能将 tzset 与 "use strict" 一起使用



我需要使用我指定的时区获取当前时间,所以我使用tzset.但是当我添加use strict时,出现以下错误

use strict;
use POSIX qw(tzset);
......................
sub is_active
{
tzset;
$ENV{TZ} = 'America/New_York';
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
if (($hour > 9 && $min > 30) || ($hour < 14))
{
return 1;
}
else
{
return 0;
}
}
Bareword "tzset" not allowed while "strict subs" in use at .......

这是已知问题吗?我可以使用其他选择吗?

当您从模块(如use POSIX qw(tzset)(导入子例程时,导入的子例程将导入到当前包中。如果不声明包,那就是main包。

要解决您的问题,请先声明一个package,然后use您需要的任何模块:

use strict;
package MyModule;
use POSIX qw(tzset);  # now tzset is available within MyModule
...

对于像use strictuse warnings这样的编译指示,它们会更改代码的行为方式但不导入任何子例程,它们出现在包声明之前还是之后并不重要。它们的效果不限于包,而是词法范围(由大括号分隔(。

最新更新