トップ
新規
一覧
Farm
検索
ヘルプ
RSS
ログイン
sub decodeの編集
!!実際の動き <input type=hidden name=nm value=なまえ> <input type=hidden name=ps value=ぱす> 上記のようなフォームであった場合、これをスクリプトへ送信すると、クエリーは「nm=なまえ&ps=ぱす」となります。 この時、URLエンコードが行われ、実際の文字列は「nm=%82%C8%82%DC%82%A6&ps=%82%CF%82%B7」と変換されます。 この文字列がファイルハンドルにより$bufferに代入されます。 $buffer = 'nm=%82%C8%82%DC%82%A6&ps=%82%CF%82%B7'; $bufferは分割され@pairsに格納されます。 @pairs = (nm=%82%C8%82%DC%82%A6,ps=%82%CF%82%B7); ループにより@pairsの要素を順に評価していきます。 $pairへ代入された要素をさらに分割し、$nameと$valueに代入されます。 $name = 'nm'; $value = '%82%C8%82%DC%82%A6'; $valueの置き換えを行います。 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; に当てはめた場合、gオプションによって $value =~ s/%82/pack("C", hex(82))/e; $value =~ s/%C8/pack("C", hex(C8))/e; $value =~ s/%82/pack("C", hex(82))/e; $value =~ s/%DC/pack("C", hex(DC))/e; $value =~ s/%82/pack("C", hex(82))/e; $value =~ s/%A6/pack("C", hex(A6))/e; このようになるはずです。 しかし、実際には $value =~ s/%82%C8/pack("C2", hex(82), hex(C8))/e; # pack("C2", hex(82), hex(C8)) = な $value =~ s/%82%DC/pack("C2", hex(82), hex(DC))/e; # pack("C2", hex(82), hex(DC)) = ま $value =~ s/%82%A6/pack("C2", hex(82), hex(A6))/e; # pack("C2", hex(82), hex(A6)) = え と同じ動作をしているようです。 eオプションで右側式の評価結果に置き換えられますので、最終的には $value = 'なまえ'; となります。 ここまでで(URLエンコードに対する)URLデコードが終了します。 これがデコードの必要性です。 さらに$valueはコンピューターで扱うための文字、Shift-JISにコンバートされます。 $valueに一意の置き換えを行った後、%Fmというハッシュに格納されます。 ループ構文を繰り返し最終的にすべての$pairをハッシュに格納します。 %Fm = ('nm','なまえ','ps','ぱす'); このハッシュを各々のルーチン内でフォームで送信された情報として参照します。 %Fm{'nm'} = 'なまえ'; %Fm{'ps'} = 'ぱす';
タイムスタンプを更新しない
添付ファイル
リネーム・コピー
リネーム
メッセージを残してリネーム
コピー
[
ヘルプ
]
Counter 713197
はじめに
SOS2 Wikiの使い方
コンテンツ
SOS2を設置する
SOS2を改造する
困ったときには
コラム
改造&FAQ
リファレンスマニュアル
機能別改造一覧
雑談
BBS
Masters Bar
公式BBS
サポート
サポートBBS
Link
リンク
SIONJamの改造ソース
設置サイトはこちらへ
検索
キーワード
AND
OR
ページ内容も含める
最近更新されたページ
雑談
Script of Saga II Wiki
パーティシステム
D2C風、レアアイテム生成システム
洋ゲー風、拾得アイテム強化プログラム
SOSIIを分割しよう
戦闘関連強化・特技&魔法
SOSII Check Script
乱数ロールプログラム
不具合情報
参照数の多いページ
Script of Saga II Wiki
(75206)
リンク
(16503)
SOS2を設置する
(12584)
雑談
(11984)
SOS2改造利用規約
(9825)