Googleは % 文字を \n にエンコードしているようなので、Perlでデコードするには
sub url_decode {
local $_ = shift;
s/\\x/%/g; # google用
tr/+/ /;
s/%([a-f\d])/pack('H2', $1)/gei;
return $_;
}
とすればいいようだ。
IE等のJavaScriptのescape関数では文字列は UCS-2 という文字コードにエンコードされるようだ(%uXXXX という表記法) 。
Perlでデコードするには、
sub url_decode {
local $_ = shift;
if (/%u[a-f\d]{4}/i) {
s/%([a-f\d]{2})|%u([a-f\d]{4})|(.)/$1 ? "\x00".pack('H2', $1) : $2 ? pack('H4', $2) : "\x00$3"/gei;
} else {
tr/+/ /;
s/%([a-f\d]{2})/pack('H2', $1)/gei;
}
return $_;
}
とすれば、EUCやShift JISに加えUCS-2にも対応できる。
ただし、Jcode.pm 0.88 で試したところUCS-2の文字コードを自動認識できないことがあったため、入力がUCS-2だと分かっているときは
Jcode::convert($str, 'euc', 'ucs2');
等と明示的に変換するとうまくいった。
はてなブックマークのようなCGIを作った。
気になったページをいちいちお気に入りに登録していてはお気に入りが肥大化してしまうし、ファイルにURLをメモするのは少し手間だったが、ブックマーク用CGIならbookmarkletで一発なので簡単にクリップできる。
シンプルなWikiを作った。/wiki/に設置。
コンセプトは
等々。
テンプレート機能は、はじめは PHP のように、HTML ファイル中に Perl コードを埋め込む方法を考えて、作ってみたが、それよりも外部 Perl ファイルを動的に読み込んで実行した方が柔軟なことに気付いた。
テンプレートとプラグインの手法は他のスクリプトにも応用できるので、WebNoteなんかにも搭載予定。
等々をしていました。また少しずつ書いていきます。
アセンブラは、WindowsでもUNIXでも使えるNASMをいうものを少し触ってみた。文法は昔使っていたTASMやMASMによく似ている。またハードよりのソフトを書くかも。
動的IPでもうまくやっていけそうなのと、IIJの回線が飽和状態なので、ぷららのダブルルートサービスを解約。
単にBASIC認証のURLにGETリクエストを送れば更新できるようだ。wget等を使えば簡単に書けそう。