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

初心者です。
perlから.exeファイルを実行できますでしょうか?
教えてください。
お願いします。

A 回答 (3件)

> まず、Your_IP=127.0.0.1を出力して、


> 次、メモ帳を開いて、メモ帳を閉じたら、
> 次、Your_IP=127.0.0.1を再出力

`C:/windows/notepad.exe`;
で呼ばれるのはサーバーにあるファイルです。
クライアントにあるファイルは当然呼べません。
(そんなことができたら何をされるか分かったものじゃありません)
よって、サーバーとクライアント間で、クライアントからこのスクリプトを呼んだ場合、メモ帳はサーバーにあるメモ帳が呼ばれます。
で、クライアントはサーバー上で開いたメモ帳を閉じることはできないので、タイムアウトになるまで終われなくなるはずです。
当たり前ですが、サーバーがWindowsでなければメモ帳はないので、Unix等他のOS上のサーバーの場合は、
`C:/windows/notepad.exe`;は動かずそのままスルーします。

改行されないのはtext/htmlと吐いているからです。
(HTMLとして吐いているので、<br>タグがなければ改行されない)
ブラウザで「ソースを開く」をやればソース上では改行されています。
あと、\r\nではなく\nだけで構いません。
    • good
    • 0
この回答へのお礼

ご回答、どうもありがとうございます。
丁寧に教えていただき、
泣きたいほど感激です。

例えば、実行したいファイル名abs.exe
linuxのpwdで/home/henjinの下に有った場合、
コマンドはどう書きますか?
パスが分からないです。

教えてください!
お願いします。

お礼日時:2004/08/26 12:06

> 'c:\windows\notepad.exe';


> このように試してみましたが、
> 動かないです。

よく見ましょう。
あなたが書いたのは普通のクォーテーションです。
バッククォーテーションで囲みましょう。
あと、\ではなく/にしましょう。

`C:/windows/notepad.exe`

ところで、メモ帳呼び出しても何にもならないと思うわけですが、何がしたいんでしょうかね。
    • good
    • 0
この回答へのお礼

すごい、できました。
ありがとうございます。

私がしたいのが、
Perlのプログラム実行中に*.exeの計算プログラムを実行させ、*.exeの実行が終わったら、元のPerlに戻して、継続すると言う物です。

今*.exeを上記教えたとおりにできました。
ありがとうございます。
でも、Perlプログラムの結果がおかしいです。
*.exeが最初に実行しました。
結果が、改行もしてくれなかった。
Your_IP=127.0.0.1 Your_IP=127.0.0.1

実現したい結果は:
まず、Your_IP=127.0.0.1を出力して、
次、メモ帳を開いて、メモ帳を閉じたら、
次、Your_IP=127.0.0.1を再出力

下記のperlはおかしいですか?
教えてください。
お願いします。


#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "Your_IP=$ENV{'REMOTE_ADDR'}\r\n";
`C:/windows/notepad.exe`;
print "Your_IP=$ENV{'REMOTE_ADDR'}\r\n";

お礼日時:2004/08/25 10:15

できます。



`○○○.exe`;

逆スラッシュで囲めば、シェルが呼び出されて、指定のコマンドが実行されます。

他にも方法はありますが、これが一番簡単。

この回答への補足

#!/usr/bin/perl
'c:\windows\notepad.exe';
このように試してみましたが、
動かないです。

#!/usr/bin/perl system('c:\windows\notepad.exe','');

上記のようにしたら、動きますが、
system()前と後ろにperlのプログラム結果が表示しなくなりました。

困ります。教えてください。
お願いします。

補足日時:2004/08/24 17:42
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございます。^-^
試してみます。
心より感謝してます。

お礼日時:2004/08/24 17:09

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