use strictを使うことで、厳密な文法チェックをし、場合によってはエラーを出す。
strict - 文法チェックを厳しくする - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発
厳密な構文チェック - プログラムの基本構成 - Perl入門
たとえば、
#!/usr/bin/perl # 変数が宣言されていない. $var1 = 10; print '$var1 = '."$var1\n";
myやourなどで、変数宣言されてない。
[bg1@dti-vps-srv93 strict]$ vi strict.pl [bg1@dti-vps-srv93 strict]$ perl strict.pl $var1 = 10 [bg1@dti-vps-srv93 strict]$
これでも実行はできるが、厳密に文法をチェックして、これをエラーにすることで、コードの質を高めたい。
そういう場合は、
#!/usr/bin/perl use strict; # 厳密な文法チェック. # 変数が宣言されていない. $var1 = 10; print '$var1 = '."$var1\n";
こうすると、
[bg1@dti-vps-srv93 strict]$ vi strict.pl [bg1@dti-vps-srv93 strict]$ perl strict.pl Global symbol "$var1" requires explicit package name at strict.pl line 6. Global symbol "$var1" requires explicit package name at strict.pl line 7. Execution of strict.pl aborted due to compilation errors. [bg1@dti-vps-srv93 strict]$
変数宣言されていないということで、エラーになる。
myで宣言をすれば、
[bg1@dti-vps-srv93 strict]$ vi strict.pl [bg1@dti-vps-srv93 strict]$ perl strict.pl $var1 = 10 [bg1@dti-vps-srv93 strict]$
エラーは出ず、実行できる。
ちなみに、warningsやstrictをuseで指定するのは、
[bg1@dti-vps-srv93 strict]$ ls /usr/share/perl5/ AnyDBM_File.pm DBM_Filter Getopt Net Text bigint.pm filetest.pm sort.pm App DBM_Filter.pm HTTP Perl Thread bignum.pm if.pm strict.pm Archive Devel I18N PerlIO Thread.pm bigrat.pm integer.pm subs.pm Attribute DirHandle.pm IO PerlIO.pm Tie blib.pm less.pm unicore AutoLoader.pm Dumpvalue.pm IPC Pod Time bytes.pm locale.pm utf8.pm AutoSplit.pm Encode JSON Safe.pm UNIVERSAL.pm bytes_heavy.pl open.pm utf8_heavy.pl B English.pm Locale Search Unicode charnames.pm overload vars.pm Benchmark.pm ExtUtils Log SelectSaver.pm User deprecate.pm overload.pm vendor_perl CORE.pod File Math SelfLoader.pm Version diagnostics.pm overloading.pm vmsish.pm Class FileCache.pm Memoize Symbol.pm XSLoader.pm dumpvar.pl perl5db.pl warnings Compress FileHandle.pm Memoize.pm Term _charnames.pm encoding perlfaq.pm warnings.pm Config Filter Module Test autouse.pm feature.pm pod DB.pm FindBin.pm NEXT.pm Test.pm base.pm fields.pm sigtrap.pm [bg1@dti-vps-srv93 strict]$
これらが特別な機能ではなく、モジュールだから。
Sample/perl/strict/strict/src/strict at master · bg1bgst333/Sample · GitHub