- 554 名前:nobodyさん mailto:sage [2012/03/09(金) 01:25:41.39 ID:???]
- 初歩すぎる質問で申し訳ありません。
今勉強中なのですが、 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;としてもうまく動かないのに、なぜちゃんと動くのか? いろいろ調べたりしたのですが、よくわかりませんでした。
|

|