友達が以前、日記で「use strict; って何でデフォルトでオンになってないの?」と言うことを書いていたのを見て、そういえばどうしてなんだろうと思ったのを思い出したので、書いてみる。(use すると strict プラグマが効くようになるモジュールとかはありますね。moose とか。そういう需要はあると言うことですよね)
perl を始めた方は、知り合いに勧められて始めた場合、「とにかく use strict; を宣言しておくといいよ」と言われて付けていたり、フリーで配布されてる掲示板スクリプトを改造していて、「use strict; した方が良いっぽい」と思ってやってみたらエラーの嵐でさんざんな目にあったりしてい(る|た)人も多いかと思います。後者は昔の僕ですが。
まぁ、use strict をするとなぜいいのかは tomyhero さんがすでに書いているので、そちらを参照してください。
「use strict; って何でデフォルトでオンになってないの?」
言われてみれば確かに。何でなんでしょうか?
よく Perl を使っていて、Perl の黒魔術的なところも知っている人なら、strict を無効化しないと出来ない処理があることは理解されてますよね。でも、そういうときは "no strict;" として局所的に strict プラグマを無効化出来ることも知っているはず。
デフォルトがオンで必要なところで no strict するのであれば、理にかなってるような気もしますよね。
ただ、ここまではスクリプトやモジュールを書くときの話で、ワンライナーのユーザがデフォルトで use strict オンだと面倒なのかなーとか想像してます。
いちいち my 書くの面倒だよねとか、そんな感じなのかなーとか考えてみたんだけど、どうなんでしょうか?あくまで僕の考えです。
誰か答えを知っていたら教えてください!
追記
tomyhero さんの記事に理由が書いてあったのを突っ込まれました >_<("もう一つの使い方"ってところ)
感謝というのはいいですよね。なんか色んな人の意見聞いてみたい!



Leave a comment