- ベストアンサー
教えて!perlから.exeファイルを実行できますか?
初心者です。 perlから.exeファイルを実行できますでしょうか? 教えてください。 お願いします。
- みんなの回答 (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だけで構いません。
その他の回答 (2)
- Ethersky
- ベストアンサー率71% (168/235)
> 'c:\windows\notepad.exe'; > このように試してみましたが、 > 動かないです。 よく見ましょう。 あなたが書いたのは普通のクォーテーションです。 バッククォーテーションで囲みましょう。 あと、\ではなく/にしましょう。 `C:/windows/notepad.exe` ところで、メモ帳呼び出しても何にもならないと思うわけですが、何がしたいんでしょうかね。
お礼
すごい、できました。 ありがとうございます。 私がしたいのが、 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";
- Dpop
- ベストアンサー率51% (279/544)
できます。 `○○○.exe`; 逆スラッシュで囲めば、シェルが呼び出されて、指定のコマンドが実行されます。 他にも方法はありますが、これが一番簡単。
お礼
早速のご回答、ありがとうございます。^-^ 試してみます。 心より感謝してます。
補足
#!/usr/bin/perl 'c:\windows\notepad.exe'; このように試してみましたが、 動かないです。 #!/usr/bin/perl system('c:\windows\notepad.exe',''); 上記のようにしたら、動きますが、 system()前と後ろにperlのプログラム結果が表示しなくなりました。 困ります。教えてください。 お願いします。
お礼
ご回答、どうもありがとうございます。 丁寧に教えていただき、 泣きたいほど感激です。 例えば、実行したいファイル名abs.exe linuxのpwdで/home/henjinの下に有った場合、 コマンドはどう書きますか? パスが分からないです。 教えてください! お願いします。