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