というわけで、密かに始めたINCMプラグインで覚えるPerl講座を転記します。 いつまで続くか分からないですが・・・。
実際に動作を試しながら出来る題材があればいいんですけどね。 とりあえず当面は既存のプラグインを見ていくことにします。 何か題材になりそうなBBSがあれば教えて下さい。
最初ということでソースの短いものにします。 一 五明さんのISLANDプラグインのソースを実行時の流れに沿って 説明していきたいと思います。 ちなみに私はこのプラグインを巡回に使ってません。(^^; じっくり見るのも初めて・・・。
さっそく1行目から
##### INCM plug-in for Island (http://www.island.ne.jp/) #### Ver0.10a 2000/4/18 by 一 五明
基本的に#以降はコメントになります。(例外もあります) コメントにすると実行時には無視されますので、好きなことがかけます。 一般的にはどんな処理をしてるのかなどを書きますね。
2行目は最初に半角スペースがありますが、これも無視されます。 普通はこれ以上説明は必要ないですが、INCMの場合は↑に意味があります。 INCMのプロパティの基本設定でプラグイン情報として表示されるからです。
として表示されます。
つづいて3行目は改行のみですね。 これも実行時には無視されます。 そこまで書かなくても分かるかもしれませんが、一応細かく説明します。
4行目はいよいよ構文が登場します。
$_=$0; s/[^\\]+$//; require($_."CMLIB15.PL");
改造時にこの辺りは変更しませんが、Perlを覚えるのが目的ですから。 Perlは通常は最初の行から順番に実行しますので、この行が最初の命令に当たります。 この行には3つの処理が1行内に記述されています。 どこで区切られているかと言うと、「;」です。 「;」は一つの命令の終端を示しています。 では命令を一つずつ見ていきましょう。
$_=$0;
分かりやすく書くと
$_ = $0;
半角スペースは無視されるので、この書き方でも問題ないです。 「=」は代入演算子というものです。 数学だと左辺と右辺が同じ値ということを表しますね。 Perlでは右辺の値を左辺に入れろという命令になります。 左辺を右辺と同じにすると考えると数学的な意味にも近いですね。 では右辺が何かを考える前にスカラー変数について説明します。
変数というのは値の入る箱みたいなものです。 数学だと「x=1」とすると「x」は「1」を表しますよね。 変数はその「x」のことです。 スカラー変数というのは1つだけ値を入れることが出来きます。 ようするに「1」と「2」の両方は入らず、どちらか1つしか入りません。 Perlでスカラ変数を表すには「$」を最初に付けます。 「$x」とすると「x」という名前のスカラー変数ということです。
$x = 1;
この時、「$x」には「1」が入ってます。
$x = 1; $x = 2;
「$x = 2;」の行が実行された時点で「$x」には「2」が入ってます。 1つの値しか入れられないので「1」に「2」を上書きしてることになります。
では、右辺が何かの話に戻ります。 「$0」は「$」が付くのでスカラー変数ですね。 この中には1つの値しか入っていません。 その前に代入してる様子がないので、中身は空なのでしょうか?
実は「$0」はPerlで初めから定義されている特殊変数と言います。 オーではなくゼロなので注意して下さい。 この特殊変数「$0」にはperlスクリプトのコマンド名が入ってます。 個人的には使ったことないですが、ここではパスを含んだファイル名が 入っているんだろうと思います。 それを「$_」というスカラー変数に代入しろと命令してるわけです。
「$_」ですが、これも特殊変数です。 ちょっとややこしいんですが、命令によっては変数名を省略できる変数です。 どういうことかと言うと、次の命令
s/[^\\]+$//;は
$_ =~ s/[^\\]+$//;
と書くのが本当ですが、「$_」は省略できるので書かれていないわけです。 命令の内容については次回ということで。 「$_」はこのようにソースをすっきりさせることが出来ます。 ですが、使いすぎると何が入ってるか分かりにくくなるので注意が必要です。
全然先に進んでないですが、今回はここまでとします。