我需要使用指定的时区获取当前时间,因此我正在使用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 .......
这是已知的问题吗?我可以使用任何替代方案吗?
答案 0 :(得分:3)
从use POSIX qw(tzset)
等模块导入子例程时,导入的子例程将导入当前包。如果您没有声明包,那就是main
包。
要解决您的问题,请首先声明package
,然后use
您需要的所有模块:
use strict;
package MyModule;
use POSIX qw(tzset); # now tzset is available within MyModule
...
对于像use strict
和use warnings
这样的编译指示,它们会改变代码的行为方式,但不会导入任何子程序,但它们是在包声明之前还是之后都不重要。它们的作用不仅限于一个包,而是一个词法范围(由花括号分隔)。