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