Perlコーディング初心者質問スレ Part 63
■ このスレッドは過去ログ倉庫に格納されています
0554nobodyさん
2012/03/09(金) 01:25:41.39ID:???今勉強中なのですが、
postデータ等をこれで変換すると言うのが良くあるのですが、
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
たしかにこれでうまくいきますし、また基本的な挙動も理解しています。
分からないのは、なぜpack("C", hex($1))/egで、問題無く動くのかということです。
具体的には、
@$1で渡されるのは1バイト分なのに、なぜちゃんと2バイト文字として変換されるのか?
A%([a-fA-F0-9][a-fA-F0-9]の書式でなぜ半角文字が受け渡されるのか?
B例えば”テ”はpostからデータを受け取った時には83eなのに、なぜ問題無く変換されるのか?
C@にかぶりますが、なぜ(pack"c",***)で上手く動くのか? "c*"じゃないのに正常に動いてる。 また、$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/hex($1)/eg;で作った変数をそのままpack"c*",$value;としてもうまく動かないのに、なぜちゃんと動くのか?
いろいろ調べたりしたのですが、よくわかりませんでした。
■ このスレッドは過去ログ倉庫に格納されています