関西オープンソース2007会場にて。
今年はノートパソコンを持ち込んだので、通りがかる人がそんなにいない時間を使って昨日出したソースを少しずつ改良していこうと思います。*1
数名の方からブースに声をかけてもらえました。(^^)とりあえずアピールしつつ。
use strictする話
昨日のソースは、そのまま実行すると動作します。ですから、目的をとりあえず達成したいなら、あの状態でよいわけです。でも、きれいな文法で書けているのかとか、お作法はちゃんとしているかどうか、というのが、use strictすることで見えてきます。つまり、お作法をきちんとしておかないと、正常に動作しなくなるかもしれないってことです。いま、use strictを使っていなくて動いているプログラムがあったとしても、ある日突然動かなくなったり、思わぬトラブルを招くかもしれないのです。
perldoc strict すると、"Perl pragma to restrict unsafe constructs"と表示されます。プラグマというのは、耳慣れない言葉だと思いますけれども、そのまま「プラグマ」という単語で覚えてもらっても、「ほげほげするモノモノ」という感覚でとらえてもらってもいいと思います。
Perlスクリプトにuse strict;の1行を加えると、それまでperl -cw でsyntax OK が出ていたものも、アウトになることが多いです。
たとえば昨日のスクリプトの場合、このようなエラーメッセージが出ます。
Global symbol "$str" requires explicit package name at ./20071108.pl line 15.
これは、スクリプト内の$strという変数が、グローバルなのかローカルなのか、ちゃんと指定していないことを怒られているのです。
ですので、このエラーをなくすには、スクリプト内で
my $str;
と書けばOKです。(このプログラム内では、$strをローカルで扱います。)これでエラーは出なくなりました。
専門的な記事としては、こちらがきっと役に立つでしょう。
・・このへんで時間切れになりました。(^^;
*1:昼間にぜんぶできなかった時は明日以降に更新します。