エンジニアが発信する【Perl】の記事を集めました

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【Perl】

2010年03月25日

[Perl]Thunderbirdのabook.mabなどのわけ分からん内容のファイルはFile::Morkを使って復元できる

Thunderbirdのabook.mabなどのわけ分からん内容のファイルはFile::Morkを使って復元できる。

ところがFile-Mork-0.3でこんなエラーが出た。

Unknown encoding 'UTF-16$E3$82$84$E3$81$BE$E3$81$A0$E3$81$95$E3$82$93' at File/Mork.pm line 346

バイトオーダー判定の正規表現が"$BE"という文字列にマッチしてしまって、$self->{byte_order}がおかしくなる。

やっつけ修正したけど、これで合ってるかどうか知らんので自己責任で。

バグレポートはしてないので誰かもうちょっとマシなパッチ作ってレポっといて。

--- File/Mork.pm.orig   2010-03-25 13:14:48.065636000 +0900
+++ File/Mork.pm        2010-03-25 13:18:47.790343200 +0900
@@ -333,7 +333,7 @@
         }

         # recognize the byte order of UTF-16 encoding
-        if (! defined ($self->{byte_order}) && $val =~ m/(?:BE|LE)/) {
+        if (! defined ($self->{byte_order}) && $val =~ m/[^/\/i$](?:BE|LE)/) {
             $self->{byte_order} = $val;
         }

2010年03月11日

[Perl] Template-ToolkitでURI Unescape

URI Escapeするときはuriフィルタ(urlフィルタ)でいいんだけど、その逆のURI Unescapeのやり方が(TT標準内には)見つけられなかった。

のでCGI.pmにやらせてみた。

#! /usr/bin/perl
use Template;
Template->new->process(/\/i*DATA);

__DATA__
[%
    SET link = 'http://example.jp/wiki/%E3%83%86%E3%82%B9%E3%83%88';
    USE CGI('uri=' _ link);
    CGI.params.uri;
%]

実行結果

http://example.jp/wiki/テスト

注意:CGI.pmのUNICODE周りの問題で文字化けする可能性あり。(TT側で調整可能)

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【Perl】

メンバー紹介

タグパネル

ランキング

エンジニアが作る最新ITブログ DODA