質問です。

JavaScript の escape 関数でエンコードされた文字列
(%uXXXX形式)を Perl でデコードしようとしています。
次のようにやると全てマルチバイト文字の場合はうまくいくのですが、
半角文字が入っているとうまくデコードできないようでした。

use Jcode;

$a = '%u3042%u3044%u3046%u3048%u304A'; # あいうえお
$b = '%u3042a%u3044b'; # あaいb

$a =~ s/%u([a-fA-F0-9]{4})/pack('H4', $1)/ge;
$b =~ s/%u([a-fA-F0-9]{4})/pack('H4', $1)/ge;

print Jcode::convert($a, 'euc', 'ucs2'), "\n";
# あいうえお と表示されOK
print Jcode::convert($b, 'euc', 'ucs2'), "\n";
# あ豹? と表示される。a以降文字化け

環境は、Linux, Perl 5.8.4, Jcode.pm 0.88 です。
Windows, ActivePerl 5.8.6, Jcode.pm 0.86 の環境で出力を sjis に
変えても同じでした。

Jcode.pm で変換できる方法はありますでしょうか?
Encode等、他の方法でもありましたらよろしくお願いします。