古い記事
ランダムジャンプ
新しい記事
普段は適切に処理をされてて問題にならないんだけど、
ときどきひょんな局面で出会ってしまうのが、
"�" という形式の文字列、16進数の実体参照です。
Perl でデコードする方法をメモ。
pack と Encode::decode を使うと良いみたい。

#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use utf8;
binmode STDOUT, ":utf8";
my $a = "情報時代";
$a =~ s/&#x([0-9A-F]{4});/decode('UCS2', pack('H*', $1))/ge;
print "$a\n";

追記080511: miyagawa さんに正解を教えて頂きました。
ありがとうございます。
my $a = "情報時代";
use HTML::Entities;
print HTML::Entities::decode($a), "\n";
正規表現の場合は chr と hex。
my $a = "情報時代";
$a =~ s/&#x([0-9A-F]{4});/chr(hex($1))/ge;
print "$a\n";
dankogai さんの記事もご参照ください。
ref.
- はてなブックマーク - miyagawaのブックマーク / 2008年05月11日
  http://b.hatena.ne.jp/miyagawa/20080511#bookmark-8550074
- 404 Blog Not Found:perl - 文字参照を(en|de)codeする
  http://blog.livedoor.jp/dankogai/archives/51048882.html

追記080512:
実体参照ではなく文字数値参照であるとの指摘を受けました。
ありがとうございます。ということで、申し訳ございませんが、
上記の内容は s/実体参照/文字数値参照/g で読んでください。

追記080512: 追記その2。
文字数値参照ではなく数値文字参照でした。ご指摘ありがとうございます。
上記の内容は s/実体参照/数値文字参照/g で読んでください。
この記事に言及しているこのブログ内の記事