前回の日記に書いたreferenceのことだが、たとえばファイルアップロードの際の、アップロードされたファイルの情報などを整理して利用するにはとても都合がいい。 だが、渡されるFORMのデータがmultipartでない場合にはあまり使い道がないのではと思った。その場合、FORMから渡されるデータはキーワードと値のペアという形でしか得られないからだ。
だがここでFORMのnameに複数のキーワードを設定すれば、1個目のキーワードを各キーとするハッシュのリストに、2個目のキーワードを各キーとするハッシュ(へのreference)が格納出来るのではないだろうか。
つまり具体的には、たとえば2つのキーワードを「_」で連結してFORMのnameに複数のキーワードを設定する。 そしてFORMから渡されたデータをデコードする際に以下のような処理をする。 if ($name =~ /^(\w+)_(\w+)$/) { $FORM{$1}{$2} = $value; } こうすれば2個目のキーワードを各キーとするハッシュへのreferenceから成る、1個目のキーワードを各キーとするハッシュが生成出来るはずだ。
※実際に試して見たら上手く行ったのですが、もしも何か間違いがありましたらご指摘いただければ幸いです。
|
2001年9月5日(水)
No.10
|
|