0

私は Windows 7 で作業しており、Strawberry をインストールしました。perl スクリプト (test.pl) を実行したい:

open OUTPUT, ">test.txt";
print OUTPUT "This is a test\n";

ファイルをクリックするか、マウスの左クリックで Perl プログラム (/perl.exe で開く) にリダイレクトします。これを行うと、コンソールが 1 秒未満開いて消えますが、ファイル test.txt は作成されません。MSコマンドに行って入力すると

> C:\myplace>perl test.pl  

できます。これまでにこのような経験をしたことはありません (WinXP、ActivePerl を搭載した他の Windows 7 PC、ストロベリーを搭載した Windows 8)。誰かがこの問題を解決する方法を教えてくれたら、とてもうれしいです。

4

2 に答える 2

2

ここには 2 つの問題があります。

  1. 必要な場所にファイルを作成します。Perl スクリプトをダブルクリックして起動すると、エクスプローラーで開いたフォルダーのコンテキストで実行されません。明示的なコンテキストを指定する場合は、スクリプトの上部近くで次の操作を行います。

    use FindBin;  # This is a module that finds the location of your script
    BEGIN { chdir $FindBin::Bin }  # set context to that directory.
    

    その後、絶対パスを指定せずに新しいファイルを作成すると、パスはそのディレクトリからの相対パスと見なされます。

    正しいパスを指定しているため、コマンド ラインからスクリプトを実行しても問題はありません。C:\しかし、次のように実行すると

    C:\> perl myplace/test.pl
    

    でファイルを作成しましたC\test.txt。ソリューションはこれFindBinを修正します。

  2. スクリプトをダブルクリックして実行すると、出力を検査する前にコマンド ラインが終了します。この「問題」は、Windows 上のすべてのプログラミング言語に共通しています。入力を待つことで、ウィンドウを開いたままにすることができます。あなたはどちらかを行うことができます

    system("PAUSE");  # not portable to non-Windows!
    

    また

    warn "Press enter to exit...\n";
    <STDIN>;  # Read a line from the command line and discard it.
              # Feels akward when launching from the command line
    

    まで待つEnter ⏎</kbd> is pressed .

    もう 1 つの解決策は、スクリプトに常にコマンド ラインを使用することです。これは、私が実際に提案する方法です。

于 2013-09-03T03:01:49.473 に答える