0
my $exe = "'C:/Program Files/Common Files/executable.exe'";

if(! -X $exe) {
    print "exe file not found";
    exit 3;
}

my $cmd = $exe.' status';
@lines = qx ( $cmd );

私の問題は、このコマンドを問題なく実行できることですが、exeファイルの存在を確認する方法を一生理解することはできません。ヒントはありますか?さまざまな種類の引用符、-f、-X、-eを試しました...何も機能しません!どんな助けでも大歓迎です。

4

1 に答える 1

3

ファイル名に余分な引用符が含まれている場合を除いて、-f演算子は正常に機能します。

もちろん-f、Windowsでわかることは、ファイルが存在し、ディレクトリではないということだけですが、おそらくそれだけで十分です。

パスに空白が含まれている場合は、コマンドラインで実行可能ファイルの名前を二重引用符で囲む必要がありますが、必要な時点でそれを行うのが最善です。これを試して:

my $exe = 'C:/Program Files/Common Files/executable.exe';

unless (-f $exe) {
    print "exe file not found";
    exit 3;
}

my $cmd = qq("$exe" status);
my @lines = qx($cmd);
于 2012-11-12T18:35:32.480 に答える