なみかわみさきの日記

2018年ころまでの日記。

関西オープンソース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:昼間にぜんぶできなかった時は明日以降に更新します。