Perl についての質問です。


HTMLとのやりとりに関してですが、

<html>
<form action="data.cgi" method="post">
<input type="hidden" name="data1" value="あいうえお">
<input type="hidden" name="data2" value="かきくけこ">
<input type="hidden" name="data3" value="さしすせそ">
</form>
</html>

というHTMLファイルを用意して、(送信ボタンがありませんが割愛させて下さい。)CGIファイルには、

for ( $i = 1; $i < $4; $i++) {
$data[$i] = $in_data{'data' . $i};
}

というコードで、@dataに読み込んでいます。現在はこのような方法でやっていますが、HTMLから連続したデータを受け取る際に、もっと効率のよい方法がありましたら教えてください。

よろしくお願いいたします。(はてなユーザーの皆さんに、ここ数日大変お世話になっているので、また少し高めのポイントでお礼をしたいと思います。)(;;){はてながないと最近生きていけません

回答の条件
  • 1人5回まで
  • 登録:2006/08/31 17:06:47
  • 終了:2006/09/06 12:02:38

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/08/31 17:12:10

ポイント35pt

効率よく、という点ではこれ以上は難しいのではないでしょうか?

十分シンプルですし。

変わった方法なら、

@data = map { $in_data{"data$_"; } (1..3);

とかやっちゃいますけど。

id:zachouR

map 関数はいいですね!その方法があった!

ありがとうございます!

2006/08/31 17:15:54
id:ootatmt No.2

ootatmt回答回数1307ベストアンサー獲得回数652006/08/31 17:22:49

ポイント35pt

1の方と同じく、

@data = map { $in_data{$_} } ('data1', 'data2', 'data3');

として受ければいいと思いますけど、

フォームの方を少し変えてみてはどうですか?


<input type="hidden" name="data" value="あいうえお,かきくけこ,さしすせそ">


としておいて、

@data = split /,/, $in{'data'};

みたいな感じで。

つまりCSVで書き出して、CSVデータを配列に分解して格納するって感じです。

id:zachouR

返答ありがとうございます。

しかし、 

の部分が 

に場合によっては変わってしまう場合も多く、ユーザーに入力してもらう時も多いのです(^^;

ありがとうございます。

2006/08/31 17:26:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません