2017-08-21 10 views
1

指定したタイムゾーンで現在の時刻を取得する必要がありますので、tzsetを使用しています。しかし、私はuse strictを追加するとき、私は次のエラーを取得する"use strict"でtzsetを使用できません

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 ....... 

は、この既知の問題ですか?私が使うことのできる代替手段はありますか?

+2

表示されたコードは、メッセージも警告もエラーも生成されません。問題の原因は、表示されていないコードにある必要があります。 – PerlDuck

+0

私は更新しました。 – user1289

+0

'未定義サブルーチン&my_module :: tzset at at ... 'を呼び出しました。 – user1289

答えて

3

use POSIX qw(tzset)のようなモジュールからサブルーチンをインポートすると、インポートされたサブルーチンは現在のパッケージにインポートされます。パッケージを宣言しない場合、それはmainパッケージです。

まずあなたが必要use任意のモジュール、その後、packageを宣言し、あなたの問題を解決するには、次のコードがどのように動作するかを変更するが、どのサブルーチンをインポートしないuse strictuse warningsなどのプラグマについては

use strict; 

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

... 

、それがあります彼らがパッケージ宣言の前後に来るかどうかは重要ではありません。その効果はパッケージに限定されず、中括弧で区切られたレキシカルスコープに限定されます。

関連する問題