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

データの受け取り方

  • すぐに回答を!
  • 質問No.209291
  • 閲覧数77
  • ありがとう数2
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 52% (27/51)

現在Perlを使ってプログラムを組んでいます。

以前までは連想配列を使って、
Formから得たデータを処理してたのですが、
連想配列はPerlだけ(?)だから
連想配列を使わずにやるように言われました。

いろいろ書店などを回り本を読んでみたのですが、
どれも連想配列を使っています。

どうしたらいいのかさっぱりわからないので、
連想配列を使わないやり方を教えてください。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全5件)

  • 回答No.1
レベル12

ベストアンサー率 40% (201/496)

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


  • 回答No.2
レベル11

ベストアンサー率 47% (160/334)

直接の答えじゃありませんが。 > 連想配列はPerlだけ(?)だから 誰がこんなことを言っているんですか? 例えばJavaには標準ライブラリーに,java.util.Properties というクラス(参考URL)があって,そこでPerlの連想配列と同様のkey-valueペアをサポートしてますし,Unix環境にはdbmという,やはりkey-valueペアを扱うCのライブラリーが ...続きを読む
直接の答えじゃありませんが。

> 連想配列はPerlだけ(?)だから

誰がこんなことを言っているんですか?

例えばJavaには標準ライブラリーに,java.util.Properties というクラス(参考URL)があって,そこでPerlの連想配列と同様のkey-valueペアをサポートしてますし,Unix環境にはdbmという,やはりkey-valueペアを扱うCのライブラリーが有ります(そもそも,Perlの連想配列自体がdbmを下敷きにしていたと思う…ちょっと自信なし)。

Windowsは詳しくないんですが,OSの極めて重要な構成要素であるレジストリーも同様のkey-valueペアのデータ構造ですので,MFC/WFCのようなライブラリー群にこの手のkey-valueペア型データ構造をサポートするライブラリーがないとは思えません。

プログラミングの修業としてなら解りますが,そうでなければこの程度の知識も無い人の言うことを聞くのはやめたほうがいいと思います。
  • 回答No.3
レベル2

ベストアンサー率 0% (0/0)

やり方はいくらでもあると思いますが、どういうことをしたいか具体的に書かないとなんとも言えないんじゃないでしょうか? ...続きを読む
やり方はいくらでもあると思いますが、どういうことをしたいか具体的に書かないとなんとも言えないんじゃないでしょうか?
補足コメント
yakumo1010

お礼率 52% (27/51)

そうですね。

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

以上のようなことで、回答できますか?
お願いします。
投稿日時 - 2002-02-05 01:35:54
  • 回答No.4
レベル9

ベストアンサー率 60% (40/66)

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

普通Perlでフォームからデータを受け取るばあい、$ENV{'CONTENT_LENGTH'}か、$ENV{'QUERY_STRING'}という連想配列をつかってフォームのデータを受け取っているので、実は連想配列を使わないで処理するのは難しいのではないかと思います。
  • 回答No.5
レベル8

ベストアンサー率 35% (7/20)

効率の良し悪しは別として どんなやり方でもいいと言うのなら・・・ foreach(split(/&/,$ENV{'QUERY_STRING'})) { ($name,$value) = split(/=/); push(@FormName,$name); push(@FormValue,$value); } みたいにすれば多分 ...続きを読む
効率の良し悪しは別として
どんなやり方でもいいと言うのなら・・・

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捨てたほうがいいと思いますけど(笑
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


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

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ