Почему Perl не может найти библиотеку в моем каталоге t /? - PullRequest
1 голос
/ 06 августа 2009

У меня есть файл .pm в моем текущем каталоге / t, и я вставил эту строку кода:

use lib qw(.);

Затем я вставил эту строку кода

use TestUtil.pm;

где TestUtil.pm находится в текущем каталоге, но я получаю эту ошибку:

Не удается найти TestUtil.pm в @INC (@INC содержит:. ........ (Обратите внимание, что @INC содержит текущий каталог)

* TestUtil.pm * 1014 package TestUtil; use strict; use warnings; BEGIN { use Exporter (); use vars qw( $VERSION @ISA @EXPORT ); # Set the version for version checking $VERSION = 1.00; @ISA = qw( Exporter ); @EXPORT = qw(_a ); } use vars qw( $VERSION @ISA @EXPORT ); sub _a { return 1; } test_XXX.t

use lib qw(.); use strict; use warnings;

use TestUtil;

Что я делаю не так?

Ответы [ 4 ]

3 голосов
/ 06 августа 2009

Если вы проводите свой тест так:

Докажи --lib т

Тогда ваш рабочий каталог на самом деле на уровень выше t /

Итак, в вашем пакете (исходный файл t/TestUtil.pm)

package t::TestUtil;
use strict; use warnings;

А в вашем test_XXX.t

use lib '.';
use t::TestUtil;

Я видел, как это было сделано в нескольких CPAN-модулях.

2 голосов
/ 06 августа 2009

Попробуйте удалить .pm из имени модуля в операторе "use ...".

0 голосов
/ 06 августа 2009

In TestUtil.pm


пакет TestUtil;

использовать строгое; используйте предупреждения;

НАЧАЛО {использовать Exporter (); использование vars qw ($ VERSION @ISA @EXPORT );

# Установить версию для версии проверка
$ VERSION = 1,00; @ISA = qw (экспортер); @EXPORT = qw (_a ); }

использовать vars qw ($ VERSION @ISA @EXPORT);

sub _a {return 1; }


In test_XXX.t


использовать lib qw (.); использовать строгое; используйте предупреждения;

использовать TestUtil;


0 голосов
/ 06 августа 2009

Вы объявили TestUtil.pm как модуль TestUtil?

# in your TestUtil module...
package TestUtil;

EDIT:

Ваш модуль Perl (TestUtil.pm) возвращает статус? Попробуйте добавить это в конец файла TestUtil.pm:

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