我应该如何使用Perl模块分发数据文件?

use*_*481 10 perl cpan

我已经开始了module-starter(带--builder=Module::Build).我想用来SQL::Library将我的SQL收集到一个.ini文件中......但是为了在运行时找到该文件,我需要知道它的确切路径.如何在运行时获取模块"数据目录"的路径?

到目前为止,我一直在使用FindBin(比如"$FindBin::Bin/../../path/to/module/datafiles/foo.ini",但我发现它不是很强大(例如,当PATH中两个不同的目录中有两个具有相同名称的程序时,它似乎会中断).

cjm*_*cjm 16

这就是File :: ShareDir的用途.由于您正在使用Module :: Build,因此您需要设置share_dir参数(并且需要Module :: Build 0.36)才能将您的数据文件与模块一起安装.然后,在您的代码中,您将使用File :: ShareDir来计算foo.ini(例如dist_file('My-Dist', 'foo.ini'))的路径