$value = 'ab%82%A0cd%82%A2ef';
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
print $value . '<br><br>';
###abあcdいef
$value = 'ab%82%A0cd%82%A2ef';
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/g;
print $value . '<br><br>';
###eはeval()です。置換後を関数と解釈しないので下のようになります。
###abpack("C", hex(82))pack("C", hex(A0))cdpack("C", hex(82))pack("C", hex(A2))ef
$value = 'ab%82%A0cd%82%A2ef';
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/e;
print $value . '<br><br>';
###gは何回でもという意味で、これを指定しないとデフォルトで最初の一回だけなので、abの次の%82がpack()を1回されるだけです。
###ab・A0cd%82%A2ef
お礼
詳しい説明どうもありがとうございました。 『eg』って2つのオプションがつながってたんですか・・・w egとか無かったもんで^^;w 質問した後に気づいたような気づかないような・・・(ぇw パールのバージョン5で書いたほうがイイんですか。覚えておきます。 (パールのお勉強してから2日目とかw) jcode.plも最新バージョンにした方がイイんですか? あと、初心者がしやすいミスとか教えてください。CGIが動かない・・・・w \$valueは『C言語のポインタ』みたいな働きをするようですね。 覚えなおしてきます・・・・w またよろしくおねがいします。