皆さんどうもありがとうございます。

pack関数でつまづいたのがURLエンコードのところだったので、
>>880の3つめのリンク先の、

(1)
$char = "%83%7E%83P%83l%83R";
$char =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("H2", $1)/eg;

(2)
$char = "%83%7E%83P%83l%83R";
$char =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1) )/eg;

この(1)と(2)について詳しく教えていただきたいです。
どちらも変換後の$charは「ミケネコ」になるようですが、どういう処理なのか
よく分かりません。変換前の$charには「l」とか「R」とかが含まれているのに、
それらはどこで変換されているんでしょうか?
>>887の「バイトサイズにパックする」というのもイマイチよく分かりません…。
とりあえず、型指定文字(?)の「H」と「C」について知りたいです。
よろしくお願いいたします。