Можно ли вручную включить библиотеку CPAN в сценарий Perl? - PullRequest
0 голосов
/ 18 ноября 2010

Ситуация, в которой я нахожусь, заключается в том, что я написал Perl-скрипт, который использует библиотеку CPAN XML :: Simple и протестирован в среде, которая имеет возможность установить необходимую библиотеку CPAN.

Однако среда, в которой должен выполняться скрипт, не имеет разрешений для установки библиотек CPAN. Мне было интересно, есть ли какой-нибудь ручной способ включить файл Simple.pm в мой скрипт и включить его в каталог со скриптом? Я пытался использовать «использовать» и «требовать» безрезультатно.

Любая помощь очень ценится.

edit: я смог решить проблему, вручную загрузив файл Simple.pm и используя строку require "Simple.pm"; в моем коде. Я думаю, что я как-то скачал неправильный файл, когда попробовал это изначально. Спасибо.

Ответы [ 5 ]

5 голосов
/ 18 ноября 2010

Поскольку XML::Simple - это чистый Perl-модуль, вы можете скачать пакет, распаковать и использовать его.Вам нужно будет использовать прагму lib, чтобы указать каталог, содержащий модуль.

Предположим, ваша структура каталогов (включены только соответствующие файлы):

my_app.pl
XML-Simple
XML-Simple/lib
XML-Simple/lib/XML
XML-Simple/lib/XML/Simple.pm

Ваш my_app.pl будет иметь доступ к XML::Simple, включив следующий код:

use lib 'XML-Simple/lib';
use XML::Simple;
3 голосов
/ 18 ноября 2010

Вы, конечно, можете включить сам XML :: Simple в свой модуль, но тогда сам XML :: Simple зависит от других модулей.Ему нужен либо XML :: Parser (который зависит от наличия libexpat), либо XML :: SAX.XML :: SAX включает XML :: SAX :: PurePerl, медленный (и неполный в последний раз, когда я проверял давным-давно) чистый анализатор perl.В качестве альтернативы XML :: SAX может использовать XML :: LibXML (зависит от libxml2) или XML :: SAX :: Expat

Итог: если вы хотите, чтобы ваше приложение было автономным, вам нужно включить как минимумXML :: Simple и XML :: SAX, и после обработки определенного объема данных вам, вероятно, также понадобится библиотека синтаксического анализа языка C.

1 голос
/ 18 ноября 2010

Мне удалось решить проблему, вручную загрузив файл Simple.pm и используя строку require "Simple.pm"; в моем коде. Я думаю, что я как-то скачал неправильный файл, когда попробовал это изначально.

0 голосов
/ 19 ноября 2010

Я делаю что-то вроде этого:

use FindBin;

BEGIN {
  unshift @INC $FindBin::Bin
}

Тогда

use XML::Simple;

должно просто работать, и это позволит вам выпустить пакет с вашим скриптом.

0 голосов
/ 18 ноября 2010

Можно ли вручную загрузить модуль CPAN на другой компьютер и установить его в целевой среде? http://www.thegeekstuff.com/2008/09/how-to-install-perl-modules-manually-and-using-cpan-command/

...