strict プラグマについて
strict プラグマについてよく分かっていないので、
自分なりにまとめながら理解しようと思う。
なお、以下の内容はstrict - 安全ではない今ストラクトを制限するPerlプラグマ
をかなり参考にしています。
(まだ書き終わってない! -> vars subs)
概要
strictプラグマには vars refs subs の3つの制約があり、
特に指定をしない場合は3つ全ての制約が受ける。
# 3つ全部 use strict; # 1つずつ指定する場合はこう use strict "vars"; use strict "refs"; use strict "subs"; # はずしたりもできるみたい use strict; no strict "vars";
vars
ローカル変数を必ずmy()を使って宣言することと、
グローバル変数を$X::fooのように修飾することを義務付ける。
ただし、$a と $b については、sortによって使われるため特別扱い。
our と use vars がよく分からない(´・ω・`)
refs
シンボリックリファレンスを使ったときにランタイムエラーを発生させる。
subs
$SIG{PIPE} = "Plumber"; と書くところで、
"Plumber" を Plumber と書くことを禁止する。