Проблемы с библиотекой в ​​сценариях Perl, работающих на удаленном диске - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь запустить скрипт в кластере, используя Microsoft HPC.В моем нынешнем виде мой скрипт (и другие необходимые файлы) находятся в папке на сетевом диске (V :).Я выполняю сценарий, используя командный файл, который соединяет компьютер в кластере с / foo, используя команду Net Use (Net Use Z:)

. Когда я пытаюсь выполнить сценарий, я получаю кучу ошибок, подобных этой:

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; 'в моем коде, но это не работает.Я предполагаю, что есть аспекты взаимодействия скриптов с библиотеками, которые я не понимаю в настоящее время.

Любая помощь будет принята, спасибо.

1 Ответ

2 голосов
/ 23 февраля 2012

Я подниму это до ответа!Если вы выполняете процесс Perl на удаленной машине, диск Z: не обязательно будет доступен.Вам сначала нужно запустить net use, или, возможно, попробовать использовать полный UNC-путь, например

use lib '\\\\COMPUTER\root\lib';

(Да, вам нужно четыре обратных слеша в начале, чтобы сделать два! Но используйте одинарные кавычки или этобудет хуже.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...