【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

perlのourに関すること - **ourについて

目次

ourについて

perl5.6(?)から導入されたour。myのグローバル変数版という説明を受けましたが、これは要するに同じサブルーチンを再度通る時にour宣言されている変数は前の値を覚えているということですか?

ご存知の方はご返答願います。m(__)m

書き込みが続いてるようなので、もう少し続けちゃおう。

僕の場合、最初にやらなければいけなことは最初に書いてしまうの で、BEGIN を使うメリットってあまり感じないです。BEGIN のおも しろい使い方があれば教えてください。

END のほうはよく使います。スクリプト実行中に条件分岐や判断の 結果として、この処理をあとで忘れずにやっておこうと思うものが 出てくると、それを END{ やりたい処理 } の形で登録してしまい ます。これは perl 付属のマニュアルにも書いてある方法ですが、 覚えるとなかなか便利なワザです。

いろいろ皆さんありがとうございました。いろいろ試してみて頑張ってみます。--Lev.

PersistentPerl?(SpeedyCGI)やmod_perl用スクリプトを書く際は、BEGINを有効に使えると思います。use時のimportと同じくコンパイル時1回のみ実行されるブロックになるので、固定値をファイルやDBから読み込み変数の初期化を行う場合等は、BEGINブロックに書くと効率的でかつ見やすいソースになると思います。 例えば以下のPerlプログラムをPersistentPerl?で動作させると初回起動時は10秒sleepしますが、2回目以降は即座に終わります。

 #!/usr/bin/perl
 BEGIN{
    sleep(10);
 }