-PR-
解決済み

教えて!perlから.exeファイルを実行できますか?

  • 困ってます
  • 質問No.974064
  • 閲覧数1537
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 78% (283/361)

初心者です。
perlから.exeファイルを実行できますでしょうか?
教えてください。
お願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル11

ベストアンサー率 71% (168/235)

> まず、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だけで構いません。
お礼コメント
2003saki

お礼率 78% (283/361)

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

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

教えてください!
お願いします。
投稿日時 - 2004-08-26 12:06:11

その他の回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 51% (279/544)

できます。

`○○○.exe`;

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

他にも方法はありますが、これが一番簡単。
補足コメント
2003saki

お礼率 78% (283/361)

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

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

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

困ります。教えてください。
お願いします。
投稿日時 - 2004-08-24 17:42:20
お礼コメント
2003saki

お礼率 78% (283/361)

早速のご回答、ありがとうございます。^-^
試してみます。
心より感謝してます。
投稿日時 - 2004-08-24 17:09:19


  • 回答No.2
レベル11

ベストアンサー率 71% (168/235)

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

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

`C:/windows/notepad.exe`

ところで、メモ帳呼び出しても何にもならないと思うわけですが、何がしたいんでしょうかね。
お礼コメント
2003saki

お礼率 78% (283/361)

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

私がしたいのが、
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:03
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

-PR-
ページ先頭へ