• 締切済み

データの受け取り方

現在Perlを使ってプログラムを組んでいます。 以前までは連想配列を使って、 Formから得たデータを処理してたのですが、 連想配列はPerlだけ(?)だから 連想配列を使わずにやるように言われました。 いろいろ書店などを回り本を読んでみたのですが、 どれも連想配列を使っています。 どうしたらいいのかさっぱりわからないので、 連想配列を使わないやり方を教えてください。

みんなの回答

  • Sephy
  • ベストアンサー率35% (7/20)
回答No.5

効率の良し悪しは別として どんなやり方でもいいと言うのなら・・・ foreach(split(/&/,$ENV{'QUERY_STRING'})) { ($name,$value) = split(/=/); push(@FormName,$name); push(@FormValue,$value); } みたいにすれば多分 $FormName[0] に変数名 $FormValue[0] に値 みたいに使えるとおもいます。 確認してないのでわかりません。 配列二つが嫌だったら配列の配列で 構造体をエミュレートしても構いませんし。 でもこれだとバリアント型であることを 利用することになりますから どんな言語でもってわけには行かないですかね・・・ ま、その辺の判断は任せます(笑 あとはforeachで@FormNameをぐるぐる回して 欲しいキーのところに来たら そのインデックスの@FormValueを見る、と。 foreach無い言語もあるでしょうから forで書き換えてください。 (forも無い場合はまた別ので) それからsplit関数とpush関数も無い環境の場合は 自分で実装してください。 ここまでやるならPerl捨てたほうがいいと思いますけど(笑

  • nak205
  • ベストアンサー率60% (40/66)
回答No.4

すみません。これは解答ではありません。感想です。 普通Perlでフォームからデータを受け取るばあい、$ENV{'CONTENT_LENGTH'}か、$ENV{'QUERY_STRING'}という連想配列をつかってフォームのデータを受け取っているので、実は連想配列を使わないで処理するのは難しいのではないかと思います。

  • kawa-sin
  • ベストアンサー率0% (0/0)
回答No.3

やり方はいくらでもあると思いますが、どういうことをしたいか具体的に書かないとなんとも言えないんじゃないでしょうか?

yakumo1010
質問者

補足

そうですね。 具体的にはエントリーフォームを作って、 名前、メルアド、住所などをフォームから 送信して、その情報を配列で処理する って具合です。 あまり、具体的ではなかったですね。 収得する情報はなんでもいいんですが。 以上のようなことで、回答できますか? お願いします。

  • aton
  • ベストアンサー率47% (160/334)
回答No.2

直接の答えじゃありませんが。 > 連想配列はPerlだけ(?)だから 誰がこんなことを言っているんですか? 例えばJavaには標準ライブラリーに,java.util.Properties というクラス(参考URL)があって,そこでPerlの連想配列と同様のkey-valueペアをサポートしてますし,Unix環境にはdbmという,やはりkey-valueペアを扱うCのライブラリーが有ります(そもそも,Perlの連想配列自体がdbmを下敷きにしていたと思う…ちょっと自信なし)。 Windowsは詳しくないんですが,OSの極めて重要な構成要素であるレジストリーも同様のkey-valueペアのデータ構造ですので,MFC/WFCのようなライブラリー群にこの手のkey-valueペア型データ構造をサポートするライブラリーがないとは思えません。 プログラミングの修業としてなら解りますが,そうでなければこの程度の知識も無い人の言うことを聞くのはやめたほうがいいと思います。

参考URL:
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Properties.html
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

配列にすればよいのでは? $form[n][0] に ハッシュキー $form[n][1]に値 で、 $val = &getval (@form, $#form, $key); で取得できるサブルーチンを作って $keyをキーワードに検索。 サブルーチン化しておけば perlでは 連想配列、その他の言語では配列検索で値を取得するというようにしてはどうでしょうか?