掲示板のほうでは間が空きましたが、WEBページのほうは連続で公開します。
では、早速↓の構文からです。
s/[^\\]+$//;
Perlにおいてもプラグインにおいても重要なものです。 プラグインを眺めると色々な場所で使われています。 特にHTMLから投稿者名等の情報を抜き出すのに良く使われます。
s/置換前の文字列/置換後の文字列/
一言で説明すると↑のようになります。 前回書いたように「$_」が省略されているので、ここでは「$_」に対して 置換処理を行うことになります。 「$_」には「$0」から代入されたperlスクリプトのコマンド名、ようするにプラグインの存在する 位置を示しているパスが入っています。
置換前の文字列に「[^\\]+$」と書かれていますね。 まず[]で囲むとその中のいずれかの文字ということを示します。例えば
[abc]
なら、aかbかcのいずれかが存在するかどうか調べるという意味です。 このプラグインでは「^\\」となってますね。 「\」が二つ並んでいるのはどういうことでしょうか? Perlでは「\」は特殊な意味を持つ文字なんです。 s///の中では、先ほどの「[]」とか「/」なども特殊な文字になりますね。 「[]」や「/」という文字として認識させるにはどうするか。 それには「\」をその文字の前に付けます。 ということは「\\」は「\」という文字を表しています。 もしこれがなくて「[^\]」とすると 「[]」の対応がおかしくなりますね。 「]」のほうがただの文字として解釈されてしまうからです。
次に「^」ですが、これは「[]」の中では否定を表します。 「\」以外の文字ということですね。 「[]」の次の「+」ですが、これは1つ以上の文字の連続を表しています。 「[^\\]+」は「\」以外の文字が続くものに一致したら、ということです。 このことをパターンマッチと呼びます。
そして最後の「$」ですが、これは置換対象の終端という意味です。 ここでは「$_」の一番最後ということですね。
「[^\\]+$」は置換対象の最後から「\」のない所までに一致させてるわけです。 「$_」にはパスが入ってるはずですよね。例えば
c:\xxx\xxx\Plugins\cm_ISLAND.pl
と入っていると考えられます。 これを最後から見て行って「\」のない所までは
cm_ISLAND.pl
ということが分かると思います。 それを何に置換しているでしょう? 何も書かれてませんね。 これは空に置き換えるということです。 ようするに削除してしまうんですね。 結果、「$_」の中身はc:\xxx\xxx\Plugins\ というプラグインフォルダのパスを示すものになります。
では次の
require($_."CMLIB15.PL");
です。
require(呼び出すライブラリのパス); として、Perlライブラリを呼び出す命令です。
CMLIB15.PLというのは一 五明さん 作のプラグイン用ライブラリです。 掲示板タイトルを取得したり、記事の日付を取得したり出来る サブルーチンなどが色々と入ってます。 ここでのこの命令を詳しく書くと
require(c:\xxx\xxx\Plugins\CMLIB15.PL);
となります、$_にはプラグインフォルダのパスが入ってますからね。
の「.」ですが、これは文字列を連結することを意味します。 「$_」の中身と「CMLIB15.PL」を繋ぐということですね。
$_."CMLIB15.PL"
"CMLIB15.PL"
とライブラリファイル名が「"」で囲まれてますが、 「CMLIB15.PL」を文字列だと解釈させるためにやってます。 ここでは「'」で囲んでもいいかと思います。 「"」では変数等が展開されてその中身が文字列の一部になりますが、 「'」では変数等もそのまま表示されてしまうという違いがあります。
requireで呼び出したものは、呼び出したスクリプトの最後にくっ付きます。
では、今回はここまでです。 次回はいよいよプラグインが巡回動作をする部分に入ります。