CGIのPerlの変数をJavaScriptの変数に使えますか
使い方お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

もうちょっと具体的にどうしたいのか教えてください。



PerlにJavaScrptを書き出させればPerl側で使っている変数の値(あくまで値)をJavaScriptに渡すことはできますけど。

この回答への補足

Perlの変数 $abc == 5; の時
JavaScrptの変数bcd に $abcの値を渡すコ-ドの書き方をお願いします。 

補足日時:2002/03/14 05:12
    • good
    • 1

CGIからHTMLを全て書き出すか、HTMLファイルをオープンして、print文で一行づつブラウザに書き出すかどちらの方法を使いますか?



また、$abc != 5の場合はabcの値は0なのかそれともJavaScript全体を記述しないのかでif文の処理がかわってきます。

とにかく、CGIがJavaScirptを書き出すのは普通にやっていることです。
if文で$abcの値に応じた処理をきめたら、here文でJavaScriptを書き出してみて下さい。そのなかにbdc = $abc;といれれば、HTML上ではbcd = 5;になります。どこで書き出すかは私の一番最初の質問によるんですが。。。

方法はいっぱいあります。
    • good
    • 1
この回答へのお礼

JavaScriptの中でbdc = $abc;と書くと変数が使えました。
有難う御座います。

お礼日時:2002/03/14 21:05

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qcgi(perl) sendmailの使い方

お手数ですがよろしくお願い致します。

レンタルサーバー(ロリポップ)にCGIを設置してサイトを作成しています。
メールフォームを作ってフォームから指定されたメールアドレスに自動返信するようにしたいのですが、うまく動作しなくて困っています。

利用環境は
Perl(ver.5.8.8)でsendmailについては以下のようになっています。
・SENDMAIL の利用は可能です。 postfixによるラッパーとなります。
・sendmailのパスは/usr/lib/sendmail もしくは/usr/sbin/sendmail どちらでも利用可。

現在メールを送るところまでは出来るようになったのですが、届くメールを見ると宛先などのアドレスに余計なドメインが付加されているのです。

テスト中のcgiは大体以下のような感じです。

my $from = 'foo01\@bar.jp';
my $to = 'foo02\@bar.jp';
my $subject = 'test';
my $msg = 'test';

open(SDML,"| $sendmail -t -i") || die;
print SDML "From: $from\n";
print SDML "To: $to\n";
print SDML "Cc: $cc\n";
print SDML "Subject: $subject\n";
print SDML "Content-Transfer-Encoding: 7bit\n";
print SDML "Content-Type: text/plain;\n\n";
print SDML "$msg";
close(SDML);

これで送られてくるメールを見ると
宛先: "foo02@bar.jp"@usersXXX.phy.lolipop.jp (XXXは本当は数字。usersXXXはロリポップのサーバー番号というものらしいです。)
こんな風に余計なドメインがくっついて送られてきます。

print SDML "To: $to\n"; → print SDML "To: foo02\@bar.jp\n";
という感じで直書きに直すとこの症状は起こらないのですが、変数で指定するとどうしても起こります。

自動返信するため宛先に変数を使いたいのですがどうしたらこの症状が出ないように出来るのでしょうか?

お手数ですがよろしくお願い致します。

レンタルサーバー(ロリポップ)にCGIを設置してサイトを作成しています。
メールフォームを作ってフォームから指定されたメールアドレスに自動返信するようにしたいのですが、うまく動作しなくて困っています。

利用環境は
Perl(ver.5.8.8)でsendmailについては以下のようになっています。
・SENDMAIL の利用は可能です。 postfixによるラッパーとなります。
・sendmailのパスは/usr/lib/sendmail もしくは/usr/sbin/sendmail どちらでも利用可。

現在メールを送るとこ...続きを読む

Aベストアンサー

これは、postfixの正しい挙動だと思います。 それは、
$to の定義において、 @の前に \ を置いてエスケープしているのにシングルクォートで括っているから、postfixは 「foo02\@bar.jp」をローカルパートと判断し、「@サーバー名」 を付加しているのでしょう。

Qperl cgiの局所変数について

現在perlを使ってcgiのプログラムを組んでいるのですが、初歩的なことがよくわかっておらず、難儀しております。
調べてみたのですが中々理解できず困っているので助けてほしいです。
全てを書くと長くなってしまうので端折って書かせていただきます。

現在、局所変数のエラーで詰まっております。

送信プログラムのGETを使用していたのですが、セキュリティ的に危険ということがわかりまして、
POSTを使うように変更しました。
しかし、エラーが発生し、進まなくなってしまいました。

use strictを記述した後にエラーが発生し、原因を調べたところ、大域変数の使用を禁止してしまうという効果があることがわかりました。
検索して調べて出てきた対策として、全ての変数を定義して、myを記述すれば解決できるとあったので、myを記述してみたところ、エラーが発生してしまいました。

Can't declare null operation in my at ****.cgi line 38, near "tr/+/ /;"
Execution of /virtual/www/****.cgi aborted due to compilation errors.

というエラーが取れないです。
@array2 =~ tr/+/ /;
という記述に問題があるらしいということしかわからないのですが、よくわかりません。

すみませんが、教えて頂きたいです。

現在perlを使ってcgiのプログラムを組んでいるのですが、初歩的なことがよくわかっておらず、難儀しております。
調べてみたのですが中々理解できず困っているので助けてほしいです。
全てを書くと長くなってしまうので端折って書かせていただきます。

現在、局所変数のエラーで詰まっております。

送信プログラムのGETを使用していたのですが、セキュリティ的に危険ということがわかりまして、
POSTを使うように変更しました。
しかし、エラーが発生し、進まなくなってしまいました。

use strictを記述した後...続きを読む

Aベストアンサー

変換演算子(tr///)はスカラ変数にしか適用できません。
配列の場合、@array[n]=~tr/+/ /; $array[n]=~tr/+/ /; はOKですが @array=~tr/+/ /; はエラーになります。

Qperl cgiの変数の受け渡しができません。3

http://oshiete.goo.ne.jp/qa/7451675.html

すみません、3回目の質問です。
相変わらず変数の値がうまく渡りません。

3つのページ(ファイル)に分かれていまして
a 入力ページ
b 入力確認ページ
c メール送信ページ
の構成になっています。

a,入力ページが
print $q->start_html(-title=>"*****", -BGCOLOR=>'#ffffff'),
#$q->p('Content-type: text/html\n\n'),
#$q->header(-charset=>"Shift_JIS"),
$q->p('<body bgcollor="#ffffff" text="#000000" link="#0000ff" vlink="#ff00ff">'),
$q->p('<FONT color="blue">****FONT>'),
$q->hr,
$q->p('<form method="post" action="***.cgi">'),# 送信ボタンで送信するデータここから
$q->p('<FONT color="blue">【***】</FONT>'),
$q->p('<INPUT TYPE="text" NAME="name" VALUE="" SIZE="25" MAXLENGTH="25">'),
$q->p('<FONT color="blue">【***】</FONT>'),
$q->p('<INPUT TYPE="text" NAME="menberno" VALUE="" SIZE="25" MAXLENGTH="25">'),
$q->p('<FONT color="blue">【***】</FONT>'),
$q->p('<select name="question" size="1" multiple="multiple">'),
$q->p('<option selected="selected" value="aaa">aaa?</option>'),
$q->p('<option selected="selected" value="bbb">bbb?</option>'),
$q->p('<option selected="selected" value="ccc">ccc?</option>'),
$q->p('</select>'),
$q->br,
$q->p('<FONT color="blue">【****】</FONT>'),
$q->p('<INPUT TYPE="text" NAME="ans" VALUE="" SIZE="25" MAXLENGTH="25">'),
$q->p('<input type=submit value="送信">'),
$q->p('</form>'),# 送信データここまで
$q->hr,
$q->end_html;

となっています。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
b.入力確認ページが
$formdata = "最初は空っぽ";
print "$formdata<BR>";
if ($ENV{'REQUEST_METHOD'} eq "GET") {# GETでの受信
$formdata = $ENV{'QUERY_STRING'};
print "Get=$formdata";
}
else {# POSTでの受信
read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'});
print "POST=$formdata";
}
print "$formdata<BR>";#ここも空っぽ・・・・
####################################################################################
# 表示部
####################################################################################
#print $q->header(-charset=>"Shift_JIS");
print $q->start_html(-title=>"******", -BGCOLOR=>'#ffffff'),
$q->p('<meta http-equiv="content-type" content=text/hetm; charset=Shift_JIS>'),
$q->p('<form method="post" action="mail.cgi" value=$formdata>'),# 送信ボタンで送信するデータここから
$q->p('<FONT color="red">'),
$q->p('***'),
$q->p('***'),
$q->p('</FONT>'),
$q->p('***********'),
$q->hr,
$q->p('<input type=submit value="****">'),
$q->p('</form>'),# 送信データここまで
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
となっていますが、受信したはずのデータが空っぽのようなのです。
何も表示されません。
色々調べてみたのですが、よくわかりませんでした。
教えて頂きたいです。

http://oshiete.goo.ne.jp/qa/7451675.html

すみません、3回目の質問です。
相変わらず変数の値がうまく渡りません。

3つのページ(ファイル)に分かれていまして
a 入力ページ
b 入力確認ページ
c メール送信ページ
の構成になっています。

a,入力ページが
print $q->start_html(-title=>"*****", -BGCOLOR=>'#ffffff'),
#$q->p('Content-type: text/html\n\n'),
#$q->header(-charset=>"Shift_JIS"),
$q->p('<body bgcollor="#ffffff" text="#000000" link="#0000ff" vlink="#ff00ff">'),
$q->p('<FONT color...続きを読む

Aベストアンサー

$qは何でしょう?

おそらくCGIオブジェクトだと思います。そうであるなら
http://perldoc.jp/docs/modules/CGI-2.89/CGI.pod より
> 新しい問い合わせオブジェクトの作成(オブジェクト指向スタイル):
> $query = new CGI;
> これは(POSTとGETメソッドの両方からの)入力を解析し、 $queryと呼ばれるperl5オブジェクトに格納します。
と、あります。つまり、
> if ($ENV{'REQUEST_METHOD'} eq "GET") {# GETでの受信
(略)
> print "POST=$formdata";
>}
の部分はまったく無意味なコードです。CGIモジュールを使う理由の一つは、こういうコードを書かなくても、簡単にパラメータ受けとれる、ということです。
内容はparamメソッドで取りだせます。


・これが出力したHTMLを「ソースを見る」等で確認しました?
pメソッドは<p>タグの構造をperl上で表現するためのものです。
$q->p( "aaaa", $q->strong("BBB") , "ccc" )
→ <p>aaaa<strong>BBB</strong>ccc</p>
といったように。こうすると、Perlでの文法の構造と、HTMLの文法構造が一致するわけです。

それをまったく無視してるので、できあがったソースが無茶苦茶になってます。
そのせいで、そもそものデータが送られてない可能性もあります。

formを書くなら http://perldoc.jp/docs/modules/CGI-2.89/CGI.pod#pod125011 あたりを読んでください。
正しい文法かどうかもわからないなら、各種チェッカーがありますから、使ってください。
http://validator.w3.org/
http://openlab.ring.gr.jp/k16/htmllint/index.html
http://users.skynet.be/mgueury/mozilla/ (firefoxのアドオン)


・前の質問(http://oshiete.goo.ne.jp/qa/7453554.html)から
> ラクダ本の上巻は必須でしょうか?

下巻は、当然、上巻の続きですから、上巻を読んでいること前提で書かれています。
他の資料で上巻相当のことを理解しているのなら不要かもしれません。
が、これまでのやりとりを見ていると、とてもそうには見えません。
ラクダ本はあまり初心者向けではないので、今すぐに、とは言いませんが、将来続けていくなら読んでおいた方がいいです、

$qは何でしょう?

おそらくCGIオブジェクトだと思います。そうであるなら
http://perldoc.jp/docs/modules/CGI-2.89/CGI.pod より
> 新しい問い合わせオブジェクトの作成(オブジェクト指向スタイル):
> $query = new CGI;
> これは(POSTとGETメソッドの両方からの)入力を解析し、 $queryと呼ばれるperl5オブジェクトに格納します。
と、あります。つまり、
> if ($ENV{'REQUEST_METHOD'} eq "GET") {# GETでの受信
(略)
> print "POST=$formdata";
>}
の部分はまったく無意味なコードです。CGIモジュールを...続きを読む

Q現在、html,cgi(perl),javascriptを主に使用して

現在、html,cgi(perl),javascriptを主に使用して、ホームページを作成しています。
作成中いくつか自分だけでは作成につまってしまった部分を質問させていただきます。

まず1つが、通常のhtmlやcgiでIE上に表示させているホームページのそのページを、
ページ上のボタンをクリックすることでwordやexcelに保存するということは可能なのでしょうか?

次に2つ目として、フォームから送信し、textファイル内に日付を付けて保存してあるデータから、
特定の日付のデータを抽出して別ページに表示することは可能でしょうか?

どちらか1つだけでもよろしいので、回答お願いします。

Aベストアンサー

前者はサーバサイドでwordなりexcelなりを生成して送り返してるやりかただね。
(pdf作成サイトとかと仕掛けは一緒)
これはwordやexcelの書類形式が(バイナリ的に)どうなってるか知らないとできない。(最近のはxml形式みたいだからどうにかなる気がする)
後者は、textがユーザローカルの場合無理。formのfileでサーバ側に一度uploadしてもらいサーバサイドで処理して埋め込むなりクッキーにするなり。(通常は埋め込む)
textというのがサーバ側のならjavascriptかクッキーで橋渡しが楽だと思う。

Qcgi perl 同じ変数で一つはカンマ削除、ひとつはカンマ有りにしたい

みなさまお世話になります。質問させていただきます。

cgi (perl)で 同じ変数で一つはカンマ削除、ひとつはカンマ有りにしたいのですが、
すぐ手直しできる方法など有りますでしょうか?
教えていただきたく宜しくお願いします。

$yoto =~s/\s/,/g; <!--こちらはカンマ有り

---省略-

print <<"EOF1";
---省略-
$yoto    <!--こちらはカンマなしにしたい(先頭にカンマがついてしまいます)



何卒よろしくお願いいたします。

Aベストアンサー

えぇと, つまり
・$yoto1 が「ある」ときには $yoto1 と $yoto をカンマ (なりなんなり) で区切る
・$yoto1 が「ない」ときには $yoto だけにする
ってこと?

もしそうなら, 何も考えず「そのような文字列」を作って変数に入れてしまえばいい.


このカテゴリの人気Q&Aランキング

おすすめ情報