Как я могу распространять файлы данных с помощью модулей Perl?

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

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

Ответ 1

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