Perl пакеты вопрос - PullRequest
       13

Perl пакеты вопрос

1 голос
/ 12 июля 2010

Я новичок в Perl.

Я скачал приложение Perl, в котором есть строка в исходном файле:

 use PWING::Utils::Utils;

Импортирует файл так, как кажется.

Я скачал плагин для Eclipse [интеграция Perl-Eclipse].Когда я пытаюсь запустить этот файл как приложение perl, он говорит, что не может найти импортированный ресурс.

Теперь возникает вопрос, как выглядит структура пакета perl?

Эта строка означает, что тамдолжна быть структура каталога, подобная этой:

    PWING - 
          Utils - 
                 Utils.pm ?

Я вижу, что загруженное приложение не содержит такой структуры, так как можно и нужно запускать?

Ответы [ 2 ]

3 голосов
/ 12 июля 2010

Состояния документации perlmod

Все файлы модулей Perl имеют расширение .pm.Оператор use предполагает это, поэтому вам не нужно указывать "Module.pm" в кавычках.Это также помогает отличать новые модули от старых файлов .pl и .ph.Имена модулей также пишутся с заглавной буквы, если они не функционируют как прагмы;прагмы в действительности являются директивами компилятора, и их иногда называют «прагматическими модулями» (или даже «прагматами», если вы классик).

Два утверждения:

require SomeModule;
require "SomeModule.pm";

отличаются отдруг друга двумя способами.В первом случае любые двойные двоеточия в имени модуля, такие как Some::Module, переводятся в разделитель каталогов вашей системы, обычно "/".

...

Пакеты Perl могутбыть вложенным в другие имена пакетов, поэтому мы можем иметь имена пакетов, содержащие ::.Но если бы мы использовали это имя пакета непосредственно в качестве имени файла, это сделало бы для громоздких или невозможных имен файлов в некоторых системах.Следовательно, если имя модуля, скажем, Text::Soundex, то его определение фактически находится в файле библиотеки Text / Soundex.pm .

Специальный @INC массив содержит каталоги для поиска модулей:

@ INC

Массив @INC содержит список мест, в которых do EXPR, require или use конструкции ищут свои библиотечные файлы.Первоначально он состоит из аргументов любых ключей командной строки -I, за которыми следует библиотека Perl по умолчанию, вероятно, /usr/local/lib/perl, за которой следует ".", для представления текущего каталога.("." не будет добавлено, если включена проверка заражения, либо -T, либо -t.) Если вам нужно изменить это во время выполнения, вы должны использовать прагму use lib для получения машинно-зависимой библиотеки.также правильно загружен:

use lib '/mypath/libdir/';
use SomeMod;
0 голосов
/ 12 июля 2010

В системе Unix этот файл будет найден в каталоге вида

 lib/PWING/Utils/Utils.pm

но проблема в том, чтобы определить, где может находиться каталог верхнего уровня 'lib'.

Если модуль установлен в вашей системе, он будет помещен в место, где Perl сможет его найти.

...