トップ>Perl&CGI>基本編目次>INCMプラグインで覚えるPerl講座2

INCMプラグインで覚えるPerl講座

第2回 置換、正規表現、ライブラリ読込

掲示板のほうでは間が空きましたが、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で呼び出したものは、呼び出したスクリプトの最後にくっ付きます。

では、今回はここまでです。 次回はいよいよプラグインが巡回動作をする部分に入ります。

キーワード

Prev : Next


トップ>Perl&CGI>基本編目次>INCMプラグインで覚えるPerl講座2

©Copyright 2002 GETWILD'74 All Rights Reserved
E-Mail:getwild@mail.wind.ne.jp