OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

フォームデコード

  • 暇なときにでも
  • 質問No.139474
  • 閲覧数83
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 59% (194/328)

よく見かける

$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;

というやつの pack("C", hex($1)) を chr($1) にした方がいい
と思ったんだけど、chr($1) のソースは見たことがないです。
chr($1) にするとうまくいかない場合があったりするんですか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 42% (103/245)

一般的には
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
を使用しますが、chr関数を使用することもできますよ。
ただchr($1) だと、$1の中身を十進数の数値だと
解釈されてしまいますので、chr(hex($1))とする
必要があります。←$1の中身は16進数です
(ご存知かもしれませんが、hex関数は16進数の数値を十進数に変換するものです)
補足コメント
A__

お礼率 59% (194/328)

ごめんなさい。
間違えて書いていました。

pack("C", $xx); は chr($xx); だから、

pack("C", hex($1)) を chr(hex($1))

としてもいいか聞きたかったんです。
でも、そういうお返事もらえてよかったです。
ありがとうございます。
pack() の代りに chr() は使えるんですね。

chr() の方がソースが短くなるし、
chr() の方が単純だから処理時間が早いと思うんだけど
pack() で書かれていることが多いから
フォームデコードでは chr() より pack()
の方が優れているところがあるのかなと思っています。
もし違いがあったら教えてください。
投稿日時 - 2001-09-23 05:49:30
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル12

ベストアンサー率 67% (310/456)

昔はchr()がなかったんです。 たしか,Perl5で増えた新しい関数だったはず。 > $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; これは昔からあるような,定番コードですからね。 ...続きを読む
昔はchr()がなかったんです。

たしか,Perl5で増えた新しい関数だったはず。

> $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;

これは昔からあるような,定番コードですからね。
お礼コメント
A__

お礼率 59% (194/328)

ありがとうございます。
Perl4 では chr( ) が使えないから、
chr( ) のソースはあまりないということだったんですね。
投稿日時 - 2001-09-26 08:26:34
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ