Microsoft HPCを使用しているクラスタでスクリプトを実行しようとしています。それが私のスクリプト(およびその他の必要なファイル)をネットワークドライブ(V :)のフォルダに持っています。私は、Net Useコマンド(Net Use Z :)を使用して、クラスタ上のコンピュータを/ fooに接続するバッチファイルを使用してスクリプトを実行します。リモートドライブで実行されているperlスクリプトのライブラリの問題
スクリプトを実行すると、Can't load 'Z:/lib/auto/IO/IO.dll' for module IO: load_file:The specified module could not be found at C:/perl/perl/lib/XSLoader.pm line 71.
at Z:/lib/IO.pm line 11
Compilation failed in require at Z:/lib/IO/Handle.pm line 266.
BEGIN failed--compilation aborted at Z:/lib/IO/Handle.pm line 266.
Compilation failed in require at Z:/lib/IO/Seekable.pm line 101.
BEGIN failed--compilation aborted at Z:/lib/IO/Seekable.pm line 101.
Compilation failed in require at Z:/lib/IO/File.pm line 133.
BEGIN failed--compilation aborted at Z:/lib/IO/File.pm line 133.
Compilation failed in require at Z:/lib/FileHandle.pm line 9.
Compilation failed in require at Z:/lib/Spreadsheet/WriteExcel/OLEwriter.pm line 18.
BEGIN failed--compilation aborted at Z:/lib/Spreadsheet/WriteExcel/OLEwriter.pm line 18.
Compilation failed in require at Z:/lib/Spreadsheet/WriteExcel/Workbook.pm line 18.
BEGIN failed--compilation aborted at Z:/lib/Spreadsheet/WriteExcel/Workbook.pm line 18.
Compilation failed in require at Z:/lib/Spreadsheet/WriteExcel.pm line 17.
BEGIN failed--compilation aborted at Z:/lib/Spreadsheet/WriteExcel.pm line 17.
Compilation failed in require at foo.pl line 9.
BEGIN failed--compilation aborted at foo.pl line 9.
このスクリプトは、ローカルで実行するとうまく動作します。私の目的は、HPCクラスタ上でリモートで実行させることです。
私は新しく地元の図書館の所在地を追加することに頭を悩ませていましたが、私はウェブ上で多くの説明がわかりました。私の頭では、私の既存の/ libフォルダを私のリモートドライブ(Z :)にコピーしてから、 'use lib' Z:\ lib;を使うだけで十分です。私のコードでは、それは動作しません。私は、スクリプトが私が現在理解していないライブラリとどうやって相互作用するかという側面があると仮定しています。
ありがとうございます、ありがとうございます。
ローカルマシンでperlを実行していますか? Z:を持っているものだからあなたは 'C:\ perl \ bin \ perl.exe V:\ source \ prog.pl'のようなことをしていますか?私はPerlプログラムがドライブレターを見ることができるかどうか疑問に思います。テストするプログラムと同じフォルダから 'print" OK "と同じようなものを実行します。-f 'Z:\ lib \ auto \ IO \ IO.dll'を実行し、そこから作業します。 '@ INC'の内容も確認してください。リモートマシンからperlを実行している場合は、最初に 'net use'を実行する必要があります。 – Borodin
お返事ありがとうございます。コードはローカルで実行されますが、問題を起こしたリモートマシンでコードを実行しようとしたときです。 Z:ドライブは、スクリプトを保持しているリモートドライブ上のフォルダであり、そこではperlが実行されます。私はcwdと@INCを出力するテストスクリプトを作った。 C:/ perl/perl/site/lib C:/ perl/perl/vendor/lib C:/ perl/perl/lib 。 Z:\ したがって、Z:\を見ることができます。私は単にC:/ Perl/libの内容をZ:/ libにコピーしてuse lib 'Z:\ lib'を使ってライブラリとして設定するだけで十分かどうかは分かりませんが、試してみるとうまくいかないようです。 乾杯。 –
-f 'Z:\ lib \ auto \ IO \ IO.dll'なら 'OK'を印刷してOKを印刷しました。 –