不能将 tzset 与 "use strict" 一起使用
Can't use tzset with "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 strict
和 use warnings
这样改变代码行为方式但不导入任何子例程的编译指示,它们出现在包声明之前还是之后并不重要。它们的作用不限于包,而是词法范围(由花括号分隔)。
我需要获取指定时区的当前时间,所以我使用 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 strict
和 use warnings
这样改变代码行为方式但不导入任何子例程的编译指示,它们出现在包声明之前还是之后并不重要。它们的作用不限于包,而是词法范围(由花括号分隔)。