私は定期的に再起動したいプログラムを実行しています。私はこの(Windowsの場合)を行うと
// Do stuff
.
.
exec $^X, $0, @ARGV;
と$^Xは、それが複数の項目として$^Xを扱う上を使用して、スペースが含まれており、私は次のようにシェルが関与していないようにリストをexecし合格することを好みます失敗する。
以下の作品だけで罰金、しかし、スクリプトに加えて、サブシェルを起動する:
# Do stuff
.
.
exec "\"$^X\" $0 @ARGV" ;
これは大きな問題ではありませんが、私は、可能な場合は、リストコンテキストで実行する方法を学習したいと思います。
物事は私が試してみました:また
exec "\"$^X\"", $0, @ARGV;
exec "\\\"$^X\\\"", $0, @ARGV;
exec "'$^X'", $0, @ARGV; # Even though Windows doesn't like '
:
push @restart, $^X, $0, @ARGV;
print $restart[0];
exec @restart;
print文は正しく配列の最初の項目として、その中のスペースで実行可能ファイルを示しています。
パスにスペースが含まれていない場所にperl実行可能ファイルをコピーしましたが、そこからはリストが動作しています。
それは動作します。早速のご返事ありがとうございます。 –