5

伝統的に、私はC:\perl\binPATH 変数に入れるだけでしたが、バージョンの競合のために、さまざまな perl バージョンを場所に保持C:\Perl-versionXY\binし、Perl スクリプトを直接呼び出して実行したいと考えていC:\Perl-...\bin\perl.exe theScript.plます。

これは実際には、すべての perl スクリプトを直接呼び出し ている自動化されたシステムで実行されます。C:\perl\bin\perl.exe(ただし、PATH にC:\perl\binあります。)

異なる Perl バージョンを並べて使用できるようにするために、C-perl-bin を PATH から削除して、Perl 関連の PATH 設定からの副作用が発生しないようにします。

これは機能するはずですか?追加の DLL ファイルを必要とするモジュール (Perl の bin ディレクトリにある LibXML.dll を必要とする LibXML など) についてはどうですか??

サイド バイ サイド バージョンには Strawberry Perl ポータブルを使用します。(誰の readme ファイルにもいくつかの PATH 設定が記載されていますが、どれが何に使用されるかは記載されていません。)

4

2 に答える 2

1

すべての DLL が実行可能ファイルと同じディレクトリにあれば、正常に動作するはずです。パスに Perl のエントリが 1 つしかない場合、DLL は実行可能ファイルと同じディレクトリにある (または何らかの明示的なロジックを使用して検出されている) 必要があるため、問題ありません。実行可能ファイルが DLL をロードするとき、検索される最初の場所は、実行可能ファイルを含むディレクトリです。

問題が発生した場合の 1 つのオプションは、バージョンごとにコマンド ファイルを作成することです。perl58.cmd、perl514.cmd など、これらの異なる名前を付けて、それらをすべて 1 つのディレクトリに配置し、そのディレクトリをパスに配置することができます。各コマンド ファイルで、対応する Perl ディレクトリをパスに追加し、コマンド ライン引数を使用して Perl を起動します。

setlocal
PATH=c:\perl58\bin;%PATH%
perl %*

setlocalパスの変更が、コマンド ファイルを実行しているコマンド ライン ウィンドウにエクスポートされないように、コマンドの使用に注意してください。

于 2012-08-06T20:35:49.460 に答える
0

PATH に Perl の bin ディレクトリがなく、明示的なパスを提供せずに実行するすべてのプログラムが bin ディレクトリにあるプログラムを呼び出そうとする場合に注意します (悪い習慣ですが、それで問題が解決するわけではありません)。 )その後、失敗し、その失敗の処理方法によっては、微妙でデバッグが難しい問題として現れる可能性があります。

したがって、それを追加しない非常にやむを得ない理由 (たとえば、PATH への追加が非常に困難で煩わしい IT ポリシーなど) がない限り、追加してください。

于 2012-08-06T16:46:08.067 に答える