STRICT(3) USER COMMANDS STRICT(3)
NAME
strict - Perl の安全でない構文を制限するプラグマ
SYNOPSIS
use strict;
use strict "vars";
use strict "refs";
use strict "subs";
use strict;
no strict "vars";
DESCRIPTION
インポートリストを書かなかったときには、すべての制限を科する
ようにします。 (これは、操作を行なうにあたって、もっとも安
全なモードですが、日常的なプログラミングには厳しすぎる面もあ
ります。) 現在、"subs"、"vars"、"refs" の 3 つの項目につい
て、制限を行なうことができます。
strict refs
シンボリックリファレンス (perlref manpage を参照) を使
用したときに、実行時エラーが起こるようにします。
use strict 'refs';
$ref = \$foo;
print $$ref; # ok
$ref = "foo";
print $$ref; # 実行時エラー、通常は ok
strict vars
my() でローカル化してある変数、完全なパッケージ名で修
飾してある変数以外の変数をアクセスするとき、コンパイル
時エラーを発生させます。 変数の自殺問題や繊細なスコー
プの問題を避けるためですから、単に変数を local() にす
るだけでは十分ではありません。 perlfunc manpage の my
の項と local の項を参照してください。
use strict 'vars';
$X::foo = 1; # ok, 完全な修飾
my $foo = 10; # ok, my() 変数
local $foo = 9; # アウト
local() は、完全修飾しない形でグローバル名を触るので、
コンパイル時にエラーが発生します。
strict subs
詩的な最適化を禁止し、サブルーティン以外の裸の識別子を
使おうとしたときに、コンパイル時エラーを発生させます。
Perl module manpages Last change: Release 5.0 Patchlevel 00 1
STRICT(3) USER COMMANDS STRICT(3)
use strict 'subs';
$SIG{PIPE} = Plumber; # アウト
$SIG{"PIPE"} = "Plumber"; # これなら良い
perlmod manpage の「プラグマ的モジュール」の節を参照してくだ
さい。
Perl module manpages Last change: Release 5.0 Patchlevel 00 2