# 章 3. フィルター

# 3.1. フィルター規則とフィルターの作り方

ちょっと判断できないというなら、待ってください。躊躇を吹き飛ばすような素晴らしいフィルター・ビルダーを作りたいと思います。 けれどもそれにはしばらくかかります。

フィルターは、置換の際、"match"する文字列を探してから、"From"と"To"を使用しようとします。サブステーションを使用して両方のオペレーションを簡単に行うことができれば、置換をより細かくコントロールできます。match、from、toは、すべて perl の 正規表現(regular expressions)です。規則は降順で評価されます。トップの規則が最初に評価され、次にトップから2番目の式、というように進みます。すべての文字列は、下記のように評価されます：

$<name> は、環境変数 <name> に展開されます。 これは、規則を挿入したときにただちに行われ、その時点以降変更されません。したがって、これはおそらく限定された値になります。

$$<name> は、マッチの際にperlの $<name> 変数に置き換えられます。これは、置換の中で$1、$2のような部分文字列とすることも、あるいはsircのもとで利用できる通常の変数（$nick、$channelなど）とすることもできます。

行の前に1回だけ使用された ˜<name>˜ は、その行のテキストを <name> と呼ばれるウィンドウに送信します。このウィンドウが存在しない場合、フォーカスのあった最後のウィンドウに送られます。 いくつかの特殊なウィンドウがあり、すべて1個の"!"が前に付いています。

!default

  現在のデフォルト・ウィンドウ。存在が保障されています。

!all

  すべてのウィンドウに送信します。テキストがどのように解析されるかに応じて、必ずしもすべてのウィンドウに表示されるとは限りません。たとえば、チャネル・ウィンドウは、ニックがチャネルにない限り、part/quitを表示しません。

!discard

  テキストを破棄します。

式の残りの部分は通常の perl の 正規表現として扱われます。 perlre の manページをよく読むと役に立つかも知れませんが、正規表現の基本的理解が最も要求されます。