Как я должен распространять файлы данных с модулями Perl? - PullRequest
10 голосов
/ 15 февраля 2012

Я начал module-starter--builder=Module::Build). Я хочу использовать SQL::Library, чтобы собрать свой SQL в файл .ini ... но чтобы найти файл во время выполнения, мне нужно знать его точный путь. Как мне получить путь к «каталогу данных» модуля во время выполнения?

До сих пор я использовал FindBin (например, "$FindBin::Bin/../../path/to/module/datafiles/foo.ini", но я обнаружил, что это не очень надежно (например, он, кажется, ломается, когда в PATH есть две программы с одинаковыми именами в двух разных директориях) .

1 Ответ

16 голосов
/ 15 февраля 2012

Для этого File :: ShareDir .Поскольку вы используете Module :: Build, вам нужно установить параметр share_dir (и требовать Module :: Build 0.36), чтобы ваши файлы данных были установлены вместе с вашим модулем.Затем в своем коде вы будете использовать File :: ShareDir для вычисления пути foo.ini (например, dist_file('My-Dist', 'foo.ini'))

...