燈明ブログ

現状は小池啓仁の応援ブログ

Perlでのコンパイル?

Perlは、インタプリタなのでコンパイルなどないと思っているかもしれませんが、実は、コンパイルもあるのです。


ただし、C言語のようにコンパイルで実行ファイルが出来るのではなく、インタプリタでもコンパイルフェーズと実行フェーズの2つに別れているのです。
コンパイルは主に文法チェックを行います。実行は、まぁ、主に実行です。


主にと書きましたが、実は、柔軟なPerlでは、コンパイル時に実行したり、実行時にコンパイルしたりもできるのです。
要は、2段階方式で実行するのですね。Perlは。


そして、コンパイルフェーズでは、2つの特別なブロックを書くことが出来ます。
コンパイルの始めに実行されるBEGINブロックと最後に実行されるCHECKブロックです。


また、実行フェーズも、2つの特別なブロックを書くことが出来ます。
実行の始めに実行されるINITブロックと最後に実行されるENDブロックです。

BEGIN {
    # コンパイルの始めに実行される
}
CHECK {
    # コンパイルの最後に実行される
}
INIT {
    # 実行の始めに実行される
    # 始めに実行されるが、useはすでに実行されている。
}
END {
    # 実行の最後に実行される
    # メインでexitやdieしてもここが実行される
}


この4つのブロックがあることを知っていると、前処理とか後処理とかが、ラクに書けるわけです。


本ブログの応援クリックも、よろしくお願いします。