アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォームメールのCGIをPerlで作成しようとしていますが、
変数の使い方がうまくいきません。
ご指南お願いします。

フォームからのデータを受け取って変換したあとの項目に

$FORM{'name_1'} ~ $FORM{'name_60'}
$FORM{'naiyou_1'} ~ $FORM{'naiyou_60'}

とあります。

たとえば
name_1 に"名前"
name_2 に"住所"
naiyou_1に"田中"
naiyou_2に"東京都"
が入っているとして

内容確認のページに
【$FORM{'name_1'}= $FORM{'naiyou_1'}】
【$FORM{'name_2'}= $FORM{'naiyou_2'}】

=【名前 = 田中】
【住所 = 東京都】

と表示したく、

$k_name = "name_"
$k_value = "naiyou_";
for ($i = 1 ; $i <= 60 ; $i++){
$mailbody .= "$FORM{'$k_name.$i'} = $FORM{'$k_value.$i'}\n";
}

として

$mailbodyに追加していき、
最後に纏めて
print "$mailbody\n";
としようと思っていますが、
この状態で実行テストすると$mailbodyが何も入ってなく
空の状態のまま表示されます。

$i = 1 の時
$FORM{'$k_name.$i'}は
$FORM{'name_1'}と見ていないのでしょうか?

また、
$FORM{'$k_name.$i'}を
$FORM{'name_1'}と見るようにするには
どうしたら良いのでしょうか。

どなたか知恵をお貸し頂けませんでしょうか。
わかりにくい点がありましたら、補足致しますのでご指摘ください。
よろしくお願いします。

A 回答 (1件)

>$FORM{'$k_name.$i'}は


>$FORM{'name_1'}と見ていないのでしょうか?

$k_name.$iがシングルクォートで囲まれているのでそのままハッシュのキーを$k_name.$iと解釈しています。

for ($i = 1 ; $i <= 60 ; $i++){
$k_name = 'name_'.$i; $k_value = 'value_'.$i;
$mailbody .= "$FORM{$k_name} = $FORM{$k_value}\n";
}

としたらいいんじゃないでしょうか。
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます。
ご指摘の通り、''の内部はそのまま文字列として見てしまうんでしたね・・・

実はさんざん悩んで質問に至った訳なんですが、質問した途端に一番大事なところを記述し忘れているのに気付いたのです。

%FORM にそれぞれの値を代入する一文
例 : $FORM{$name}=$value;
を忘れてしまっていたので、この質問の内容では解決できないものでした・・・(^_^;)

お答えいただきましたのなんだか申し訳ございません。

しかし、上記の一文を記述していたとしても
""''の違いによる解釈の違いはあったのですから、良回答でポイントを差し上げたいと思います。

ありがとうございました。(^_^)
また、いつかこのサイト内で出会える事を願っています。

お礼日時:2002/04/12 10:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!