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も見ています

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

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

QExcel VBAで、セルに入ってるデータ型を調べる方法は?

現在、Excel VBAでプログラムを作成しています。

Do Until ~ Loop の終了条件を
アクティブセルに入っているデータの型が文字列型の時
としたいのですが、そのようなことは可能なのでしょうか?

可能だとしたら、どのように記述したらいいのでしょうか?

当方のPCは
Win XP、Excel2003
です。

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

Aベストアンサー

VarType 関数を使うとか。

Sub SampleProc()

  Dim i As Long
  
  i = 1
  Do While Len(Cells(i, "A").Value) > 0
    If VarType(Cells(i, "A")) = vbString Then
      Exit Do
    Else
      ' // 処理
    End If
    i = i + 1
  Loop
  MsgBox CStr(i) & "行目で停止"

End Sub

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」をローカルパートと判断し、「@サーバー名」 を付加しているのでしょう。

QVBAでオブジェクト変数にsetしたシートがactiveかどうかを調べるには?

標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、
あるタイミングで、あるシートをそのオブジェクト変数にSetしています。

で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。

コード例)
Private oSheetA as Worksheet

Sub SetSheet(sName as String)
  Set oSheetA = worksheets(sName)
End Sub

Sub SetValue(nValue as integer)
  xxxxxx ←ここでoSheetAがActiveならやりたいことがある。
  oSheetA.Cells(nRow, nCol) = cValue
End Sub

具体的には、複数のBookを開いている状態で、Activeシートが何であるかはオペレータの操作次第なので固定化できない状態で、SetValueが呼び出されたとき、oSheetAがActiveだったら、値をセットするセルが見えるようにセルをActivateかスクロールさせたいんです。

標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、
あるタイミングで、あるシートをそのオブジェクト変数にSetしています。

で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。

コード例)
Private oSheetA as Worksheet

Sub SetSheet(sName as String)
  Set oSheetA = worksheets(sName)
End Sub

Sub SetValue(nVa...続きを読む

Aベストアンサー

Option Explicit

Private oSheetA As Worksheet

Sub SetSheet(sName As String)
Set oSheetA = Worksheets(sName)
End Sub

Sub SetValue(nValue As Integer)
If oSheetA Is ActiveSheet Then
MsgBox ("hoge")
End If
oSheetA.Cells(1, 1) = nValue
End Sub

Sub Main()
SetSheet ("Sheet1")
SetValue (5)
End Sub

'実行できるようにソースは変更していますが,
'こんな感じでIs演算子で同じオブジェクトか比較してみるってのはどうでしょう?

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/+/ /; はエラーになります。

QVoidポインタで受け取った変数の型を調べる方法

あるライブラリの関数を利用しようとしたのですが、その関数の引数にVoidポインタがあり、どういう型のデータを格納したのかわかりません。このポインタのアドレスに格納されたデータの型を調べる関数なり方法なりというのはあるのでしょうか。

Voidポインタというのは型を問わずに受け取れるというのは利点ですが、受け取ったものがあらかじめなんだかわからない場合はどうするのでしょうか。よろしくお願いします。

Aベストアンサー

★基本的に調べようがありません。
・『void』ポインタはアドレス情報のみを受け渡しますので、型のサイズまでは分かりません。
 逆に言えば、型のサイズが分からないから『汎用ポインタ』と呼べるのです。
・あるライブラリの関数とは何?→どんな関数か分かりませんので、これ以上はアドバイス無理!
 ただ、C言語の qsort などでは比較用の関数で『void』ポインタを受け取りますが、その関数内で
 渡されたデータの『型』を指定します。→ポインタの形でキャストします。
 この比較用の関数は自前で用意する関数ですので、ソートするデータの型が分かっています。
 でも、ソートするデータ型が複数ある場合は、比較用の関数を複数作って切り替えます。
・あと関数に型を表す引数があれば、それを見て判断できますが、そうでない場合は『void』ポインタで
 渡される前の『型』の調べることは不可能です。→言語仕様より。
・以上。参考に。→一応、あるライブラリの関数とは何?

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モジュールを...続きを読む

QVBAでテキストファイルの件数を調べる方法

Access2000のVBAで関数を使用して
ファイルのパス名、ファイル名を指定すれば、
テキストファイルの件数を検索し変数に返す
関数はありませんか?
   
通常テキストファイルを開き1件1件カウントを
取っていけば件数を知ることは可能ですが、
数千レコードのテキストファイルが複数個存在
する場合処理スピードが遅くなるため何か
最適な関数はありませんか?
よろしくお願い致します。

Aベストアンサー

こんにちは。maruru01です。

No.2の方のFileSystemObjectを利用する方法です。

行数 = CreateObject("Scripting.FileSystemObject").OpenTextFile(ファイルのフルパス, 8).Line

複数のファイルをカウントするなら、ファイルでループを回せばいいでしょう。

あと、FileSystemObjectの参考ページを紹介しておきます。

http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsobjFileSystem.asp

参考URL:http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm,http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/l

こんにちは。maruru01です。

No.2の方のFileSystemObjectを利用する方法です。

行数 = CreateObject("Scripting.FileSystemObject").OpenTextFile(ファイルのフルパス, 8).Line

複数のファイルをカウントするなら、ファイルでループを回せばいいでしょう。

あと、FileSystemObjectの参考ページを紹介しておきます。

http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsobjFileSystem.asp

...続きを読む

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かクッキーで橋渡しが楽だと思う。

QVBAで他のプログラムが起動しているか調べる方法

VBAで
D:\test\test.exe
が起動中か調べたいのですが
どのようにすれば良いですか?

http://www.vbalab.net/vbaqa/data/access/log/tree_532.htm

このページの方法を使えば、
exe以外のファイルが使用中かは調べることができたのですが
exeファイルの場合にはうまくいきません。

良い方法があれば教えてください。

Aベストアンサー

残念ながら・・・出来ません。
一応、プロパティの中に Handle ってのがあるのですが
取得できるのは ProcessID の値です。
以前、調べていて Handle を見つけた時は、
『やったー \(^o^)/』と思いましたが
ぬか喜びでした。。。orz

なお、当方の環境は、Windows7 Pro & Office2010 です。

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

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

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

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

---省略-

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



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

Aベストアンサー

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

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


人気Q&Aランキング