• ベストアンサー

"$"を変数に入れる

CGIを改造中です。 変なことをしているかもしれませんが、変数に$と別の変数を入れたいんです。 「xx.cgi?h=1」でCGIに変数を送り、$hensuuに「$hen1」と代入したいんです。 で、以下のようにやってみました。 $hensuu = '$hen'; もちろん、「print "$hensuu\n";」とすると「$hen」と表示します。 $hensuu = '$hen'$h;や $hensuu = '$hen'"$h";とすると、エラーになりストップします。 どのようにしたらうまくいくのでしょうか?

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

$hensuu = '$hen' . $h; ではどうでしょうか

master-3rd
質問者

お礼

ありがとうございました。ばっちり出来ました。

関連するQ&A

  • CGIでテキストボックスの内容によって条件分岐

    CGI超初心者です。 htmlファイルに設置したテキストボックスの値によって CGIで表示させる内容を変えたいです。 ネットで検索してコードを作成してみたのですが うまくいきません。 どのように修正すればいいのでしょうか? test.html---------------------------------------- <FORM action="test.cgi" method="POST"> 変数を入力 <INPUT type="text" name="hen"> <INPUT TYPE="submit" VALUE="送り"> </FORM> ------------------------------------------------- test.cgi----------------------------------------- #!/usr/local/bin/perl $h = $FORM{'hen'}; print "Content-Type: text/html; charset=Shift_JIS\n\n"; print "<html>\n"; print "<head><title>サンプル</title></head>\n"; print "<body>\n"; if ($h > 50) { print "<p>変数hの内容は50より大きいです。</p>\n"; } else { print "<p>変数hの内容は50より小さいです。</p>\n"; } print "</body>\n"; print "</html>\n"; exit; ------------------------------------------------- テキストボックスに、50以上の数字を入力しても、50以下の数字を入力しても どちらも 「変数hの内容は50より小さいです。」 と表示されてしまいます。 よろしくお願いいたします! ※ 前回の質問(http://okwave.jp/qa/q8179935.html) より、CGIは使わない方向で検討中ですが CGIに途中まで足をつっこんでしまい、 気になったので質問させていただきました。

    • ベストアンサー
    • CGI
  • perl で環境変数を表示できない

    perlの初心者です。下記のCGIを実行しましたが、全く表示しません。 最初の「環境変数」と言う文字も表示しません。 どこか初歩的なエラーがあると思いますが、わかりませんので質問させていただきます。 --- #!/usr/local/bin/perl print "Content-type: text/html", "\n\n"; print "<HTML><BODY>", "\n"; print "<H1>環境変数</H1><HR>", "\n"; foreach my $key( keys %ENV ){ print "$key: $ENV{$key}<BR>", "\n"; } print "<HR>", "\n"; print "</BODY></HTML>", "\n";

    • ベストアンサー
    • Perl
  • CGIに変数を送る際のアドレス

    メールフォームに変数を送ろうとしています。 ただ、送り元がデザインの制約で<FORM>のボタンではなく、<A>のリンクになってしまってます。 <A>で変数を送ろうとすると、 href="./mail.cgi?hen1=xx&hen2=xxx" という形ですよね。そうすると、アドレス欄に変数がすべて載ってしまいますよね。 これをどうにかして非表示にすることは出来ないのでしょうか?(いわゆるtype=hidden的な事) または、<FORM>内で文字列をボタンにすることは可能なのでしょうか?

  • perlの内容なのですがこれで合っていますでしょうか?

    print 関数は文字列や数値だけでなく、変数を指定してその値を表示することもできます。 $a=1; 1を$aに代入する。 print $a; 変数$aの値を表示させる。 $a=2; 変数$aに2を代入する。 $b=3; 変数$bに3を代入する。 print "変数\$aに変数\$bを代入\n"; 「変数$aに変数$bを代入」という文字を表示させて改行する。 $a=$b; 変数$bの値を変数$aに代入する。 print "\$a="; 「$a=」を表示させる。 print $a; 変数$aの値を表示させる。 print ",\$b="; 「,$b=」を表示させる。 print $b; 変数$bの値を表示させる。 print "\n"; 改行を表示させる。 実行結果は↓↓↓↓↓↓↓ 変数$aに変数$bを代入 $a=3,$b=3 変数の書き方 文は ; で区切るが、1行に並べることも可能。 $a=2; $b=3; ↓ $a=2; $b=3; 複数の変数に、同時に値を代入することも可能。 $a=2; $b=2; ↓ $a=$b=2;

    • ベストアンサー
    • Perl
  • 別CGIファイルから変数を呼び出す方法

    CGI勉強中です。 環境設定を1つにまとめたいと思っているのですが、どのようにしたらいいのかがわかりません。 あるCGIを見ると、「$Hod」というのを使って実現していました。 呼び出したい項目を「$HoD->{settei}{hensuu}」という風にしていました。 呼び出すCGIファイルの指定は my$config = &open_config ($settei); my %HoD = (); @HoD{"settei} = ($settei); この部分だと思うのですが、これだけでOKでしょうか? 呼び出したいCGI(このファイルに$page="xx.htm"等と書き込む)を"main.cgi"とした場合、 実際変数を使うファイルには my$config = &open_config ($main); my %HoD = (); @HoD{"main} = ($main); として、変数が必要なところには $HoD->{main}{page} でいいでしょうか? また、この場合、"my$config~~"はどの位置に配置したらいいのでしょうか? …もちろんそのCGIの種類によって具体的な場所は違うとは思うのですが… お願いします。

    • 締切済み
    • CGI
  • 任意の文字列を変数にする方法

    お世話になります。 掲題の件につきまして質問させていただきます。 テキストファイルに記述されている文字列を ルールにのっとり、読み込んだ変数に置き換える方法が よくわかりません。 ご存知のかたがいらっしゃいましたらどうぞご教授ください。 例) <テキストファイル> ☆☆☆$hensuu☆☆☆ <vb> (1)テキストファイルより、上記文字列を取得 (2)$以下の文字列(hensuu)をvbで宣言した変数(hennsuu)と置き換える。 (3)vb側でhennsuu = 100とすると、 vbからテキストファイルを読み込んだ時点で hennsuuに”☆☆☆100☆☆☆”と代入される。 わかりづらい例で申し訳ありませんがどうぞよろしくお願い申し上げます。 失礼いたします。

  • 変数の添え字をforで処理する方法。

    変数の添え字をforで処理する方法。 今朝、 http://okwave.jp/qa/q6000492.html で質問させていただき、この方法は解決したのですが、 $_POST[hensuu1] $_POST[hensuu2] .... と言う場合に、今朝の方法を応用して、 for ($n=1; $n<=10; $n++){ echo $_POST[{'hensuu'.$n}]; } と記述しても旨く処理できずに、 Parse error: syntax error, unexpected '{', expecting ']' in ・・・・・ のようなエラーが出てしまいました。 解る方いらっしゃいましたらご教授お願い致します。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • テキストファイル内の変数を展開して出力したい

    テキストファイル内に変数を書いておいて、出力時に その変数を展開させる方法を教えてください。 具体的には、[test.txt]を[出力]のようにしたいのです。 ためしに[test.cgi]を作ったのですが[test.txt]の内容がそのまま出てきてしまいました。 [test2.cgi]ができるなら、[test.cgi]でもできると思っていたのですが… [test.cgi] #!/usr/local/bin/perl $moji="OK"; print "Content-type: text/html\n\n"; open(IN, 'test.txt'); while (<IN>) { print "$_"; } close(IN); exit; [test2.cgi] #!/usr/local/bin/perl $moji="OK"; $naka="<HTML><BODY>$moji</BODY></HTML>"; print "Content-type: text/html\n\n"; print "$naka"; } close(IN); exit; [test.txt] <HTML><BODY>$moji</BODY></HTML> [出力] <HTML><BODY>OK</BODY></HTML>

    • ベストアンサー
    • Perl
  • cgiの変数をhdmlに渡すことはできますか?

    hdmlコンテンツを作成しているのですが、hdmlのファイル#1からgosubでcgiのファイル*1に行き、printをつかってhdmlのファイル#2を表示しています。そのファイル#2にcgiのファイル*1で処理した変数を渡し、再びcgiのファイル*1に行きたいのですが、うまく行きません。 このような処理は不可能でしょうか? 下記のソースの$s1,$s2の部分が処理した変数になります。 print "Content-type:text/x-hdml;charset=Shift_JIS\n\n"; print <<"EOT"; <HDML VERSION="3.0" PUBLIC="TRUE"> <display name="test"> 進む <action type=accept task=gosub dest=*1.cgi label=進む method=post postdata=s1=$s1&s2=$s2> </display> </HDML> EOT

    • 締切済み
    • CGI
  • 変数について

    Perlを勉強し始めました。 いままでプログラミングを組むことがなかったので、全くの素人 なんですが、いきなり壁に当たりました。 変数のところを勉強してるんですが、 $a=1; $a +=2; print $a みたいな感じで書かれてるのをみて、ふと疑問が。 $aに1を代入する。 $aに、$a+2を代入して、$aを表示ってことですよね。 $b +=2;にして、print $bにしないで、なんで $aに、$a+2を代入するんでしょうか?? $aは、すでに1を代入していて、$aは『1』としてるわけじゃないですか。 その$aに、また$a+2を代入するという発想がさっぱり理解できません。 普通に、$bにすればいいじゃん、その方がすっきりするじゃん、って思うんですが、なんでこんな記述方法にするのかわかりやすく教えていただけたら助かります。

    • ベストアンサー
    • Perl