2012-06-25 4 views
3

Я пытаюсь воспроизвести то, что мой код C#/XPath делает на Linux с использованием Perl. Я скопировал и вставил код в примере 8-6 в Perl & XML. Если я понимаю правильно, я должен быть в состоянии выполнить этот код Perl, поместить этот код в терминалеИспользование XPath с Perl

xmlPerl.pl mydatafile.xml "/inventory/category/item/name" 

Но когда я пытаюсь запустить файл Perl, он не работает. Вот ошибка:

[[email protected] ~]# perl xmlPerl.pl 
Can't locate XML/XPath.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at xmlPerl.pl line 3. 
BEGIN failed--compilation aborted at xmlPerl.pl line 3. 

Что я делаю неправильно? Я думаю, что это имеет какое-то отношение к именам XML и XPath в начале моего кода. Нужно ли мне что-то устанавливать для использования рамок XPath? Я запускаю RedHat 5.5.

+0

Из [Переполнение стека Perl FAQ] (http://stackoverflow.com/questions/tagged/perl?sort = faq): [Какой самый простой способ установить отсутствующий модуль Perl?] (http://stackoverflow.com/questions/65865/whats-the-easiest-way-to-install-a-missing-perl-module) – daxim

+0

Попробуйте получить современную книгу, которая учит [LibXML] (http://www.xmlsoft.org/), см. [Что является самым простым способом выполнения запросов XML для XML-данных в Perl?] (Http: // stackoverflow.com/questions/5275610/what-is-the-easiest-way-to-do-xpath-querying-of-xml-data-in-perl) – daxim

ответ

9

От perldiag:

Can't locate %s

You said to do (or require, or use) a file that couldn't be found. Perl looks for the file in all the locations mentioned in @INC , unless the file name included the full path to the file. Perhaps you need to set the PERL5LIB or PERL5OPT environment variable to say where the extra library is, or maybe the script needs to add the library name to @INC . Or maybe you just misspelled the name of the file. See require in perlfunc and lib .

У вас не установлен модуль XML::XPath, или Perl его не нашел. Установите модуль с CPAN:

> cpan XML::XPath 

или с помощью менеджера пакетов:

> apt-get install libxml-xpath-perl 

Или, если он уже установлен сказать, где он находится с переменной PERL5LIB среды:

> PERL5LIB=/path/to/lib perl ... 

@INC переменная:

BEGIN { 
    unshift(@INC, '/path/to/lib'); 
} 

или lib Прагма:

use lib '/path/to/lib'; 
+0

Это сработало, оно установлено и все, но теперь я получаю эту ошибку - «Нет пути для поиска на /usr/lib/per5/site_perl/5.8.8/XML/XPath.pm строке 65» Я также установил его с помощью cpan , – PolarisUser

0

Ответ в первой части вашей ошибки:

Can't locate XML/XPath.pm 

В Perl, огромная выгода от использования модулей или библиотек, что другие написали для вас и вы можете использовать. В этом случае кто-то написал модуль под названием XML :: XPath (в Perl, путь обозначен как «::»), и вам просто нужно его установить. Самый простой способ установить его - через cpan, это инструмент, который поставляется с большинством установок Perl. Просто запустите:

cpan 
(you'll be dropped into a different command prompt) 
install XML::XPath 

Это будет выходить и получать XML :: XPath, распаковать его, сгенерировать Makefile, проверьте зависимостей (и устанавливать какие-либо, что не хватает), сделать это, проверить его, и установить его вы. Посмотрите here для получения дополнительной информации об использовании CPAN.

+0

Это сработало, оно установлено и все, но теперь я получаю эта ошибка - «Нет пути для поиска на /usr/lib/per5/site_perl/5.8.8/XML/XPath.pm строке 65» Я также установил его с помощью cpan. – PolarisUser

3

Это стандартная ошибка, возникающая при попытке установить use модуль, который не установлен. Вы должны установить его.

Идеально использовать пакет ОС для него; например, на DEBiAN полученных ОС (таких как Debian или Ubuntu)

$ apt-get install libxml-xpath-perl 

В противном случае, вы можете установить его, как обычно, с помощью CPAN

$ cpan XML::XPath 
+0

А я вижу. Я запускаю его на RedHat 5.5. Я попытаюсь посмотреть, смогу ли я найти для него установку. Я отправлю обратно на это решение! Спасибо! – PolarisUser

+0

Это сработало, оно установлено и все, но теперь я получаю эту ошибку - «Нет пути для поиска на /usr/lib/per5/site_perl/5.8.8/XML/XPath.pm строке 65» Я также установил его с помощью cpan , – PolarisUser

+0

Ну, ошибка «Нет пути к поиску», скорее всего, является фактической ошибкой XPath, жалуясь, что она не может найти запрошенный узел в вашей структуре данных. Это не похоже на ошибку perl. – LeoNerd

Смежные вопросы