Perl覚え書き20041125

 今日もGateKeeperからのアクセスがあった。一体これは何をやってるのか誰か知ってないかなあ…。クッキー食べてるしブラウザからのアクセスみたいだけど、手動なのか何らかの方法を使って自動でアクセスしているのか。動きが不気味。

 さて今回は、またしつこくHTML変換関数。そうする必要があったのかどうなのか、pmの形にしてみた。使いたいプログラムの先頭でuseするだけ。サンプルは以下の通り。

use convTag;

open(FH,"sample.html") or die "cannot open file:$!";
{
	local $/;
	$html = <FH>;
}

print ${convTagsAll(\$html)};

exit;

 本当はallow_tagsの定義を別ファイルにしたかったけど、別ファイルにしてrequireすると定義されてないことになってしまってどうしたらいいか分からなかったからこんな形に。

 で、exportしている関数はconvTagとconvTagsAllの二つ。前者は単数の、しかもタグのみを変換する物、後者はタグとその他の文字を含む文字列を変換する関数。一応二つexportしてあるが、単数の方は余計な文字が入っているとうまく変換できないため、特別な理由が無い限り後者を使う方がいいだろう。

 ところで、ブラウザはけっこう柔軟な、というかある程度間違ったタグの書き方をしていても融通を利かせて適当に解釈してくれる。それが逆に仇になる形になった。ここで使っているタグの正規表現は、正しく書かれたタグしか解釈してくれない。しかしブラウザは適当に解釈してくれる。そのズレでわざとある書き方をすることでこの変換ルーチンを抜け、ブラウザにだけ解釈出来るタグが残る可能性がある。

 それをどうするかが次回の課題。

 あ、ここにアップロードしておいたので、もし必要な人が居ればどうぞ。