2012年06月12日

Fcntlの呼び出し

 Perl5では安全なsysopen関数が使えるようになりました。また、flock関数でも従来の数値指定に代えてLOCK_SHやLOCK_EXなどわかりやすい操作モード定数を使用できるようになりました。sysopenも同じく。
 で、この定数を使用するためには use Fcntl; でFcntlを読み込んでおく必要があるのですが、どのバージョンからなのか「use Fcntl;」だけでは「Bareword "LOCK_SH" not allowed while "strict subs" in use at hoge.cgi line 100.」と警告されることに。かといって、''や""で括ろうものなら今度は「Bareword "LOCK_SH" not allowed while "strict subs" in use at hoge.cgi line 100.」との警告が。

 で、結局この解決法というのが、Fcntlを呼び出すとき。「use Fcntl qw(:DEFAULT);」としたら解決しました。まあ、flock関数も使うんで「use Fcntl qw(:DEFAULT :flock);」でもいいかもしれません。

 Perlのバージョンは5.10.1ですが、この挙動はいつからでしょうか。結構書籍やウェブにも「use Fcntl;」で済ませているところがあるので、今後気をつけないと。
posted by 鯖缶 at 00:58 | Comment(0) | TrackBack(0) | ただいま開発中 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。