Я начал module-starter
(с --builder=Module::Build
). Я хочу использовать SQL::Library
для сбора моего SQL в файл .ini ... но для того, чтобы найти файл во время выполнения, мне нужно знать его точный путь. Как мне получить путь к «каталогу данных» модуля во время выполнения?Как следует распространять файлы данных с помощью модулей Perl?
До сих пор я использовал FindBin (например, "$FindBin::Bin/../../path/to/module/datafiles/foo.ini"
, но я обнаружил, что это не очень надежный (например, он, кажется, сломается, когда в двух разных программах в PATH есть две программы с тем же именем).
Могу ли я получить файл «File :: ShareDir», чтобы найти файлы, когда модуль равен n ot еще установлен, из сценариев в bin/или тестовых файлах? – user1481
@ user1481, скрипты, запускаемые через 'Build test', найдут файл, потому что модуль установлен (в' blib/') при выполнении этих тестов. – ikegami
@ user1481, для других скриптов либо выполните perl Build.PL && ./Build && perl -Mblib script.pl', либо добавьте код для возврата в '' $ FindBin :: Bin /../ share/foo.ini " 'если файл, возвращенный File :: ShareDir, не существует. – ikegami