2017-05-15 16 views
-2

相対パスで別のスクリプトからスクリプトを呼び出す:Perlの - 私はそのために、このラインを使用し、他のPerlスクリプトを呼び出すPerlスクリプト持っ

system($^X, "script.pl", @ARGV); 

すべてのスクリプトが同じフォルダに存在しますが、私はメインを呼び出したいですスクリプトはD:\ TEST \ Perlにありますが、C:\からコマンドラインを開き、この場所からメインのものを呼び出します。

おそらく愚かな質問ですが、どのようにして子スクリプトを呼び出すことができますか? 本当にモジュールを使用する必要がありますか?どれ?

+0

をしたいようにあなたが最初の 'chdir'を使用することができますね? –

+1

あなたは 'FindBin'が必要だと思います。しかし、私はあなたには「XY問題」があるかもしれないと思います。 – Sobrique

+0

プログラム内のある場所に完全なパスを持つ呼び出し可能なスクリプトをリストすると何が問題になりますか?(「メイン」のものには 'FindBin'を使用します)? – zdim

答えて

3

あなたはFindBinモジュール

use FindBin '$Bin'; # $Bin will contain the directory containing the executable file 

# Then, later in your code 
system($^X, "$Bin/script.pl", @ARGV); 
+0

'$ RealBin'は' $ Bin'と同じですが、誰かがスクリプトへのシンボリックリンクを作成した場合にも動作します。したがって、 '$ Bin'の代わりに' $ RealBin'を使うべきです。 – ikegami

+0

@ikegami '$ Bin'と' $ RealBin'の違いを指摘する価値はあると私は同意します。私はここで、どのようなものを使用するのが最善であるかについての状況を十分には知らないと思います。 –

+0

それは意味をなさない。 '$ RealBin' *はシンボリックリンクのサポートを追加しません。したがって、' $ RealBin'は常に使い方がベストです。 – ikegami

関連する問題