我正在将继承的软件集合转换为基于Module :: Build的发行版.
lib除.pm文件外,这些目录还包含模块所需的某些外部文件.这是很容易保证有扩展名的是被复制的一起.pm使用的文件Module::Build的add_build_element方法.
但我对如何处理没有扩展名的文件感到困惑.如何.pm在安装期间确保这些文件也与文件一起复制?有没有办法告诉Module::Build复制下的所有内容lib?
构建PL
use lib 'inc';
use Local::Module::Build::Extensionless;
my $build = Local::Module::Build::Extensionless->new(
module_name => 'Foo::Bar',
license => 'restricted',
);
$build->add_build_element('lib');
$build->create_build_script;
Run Code Online (Sandbox Code Playgroud)
inc/Local/Module/Build/Extensionless.pm
package Local::Module::Build::Extensionless;
use parent 'Module::Build';
use File::Next qw();
sub process_lib_files {
my ($self) = @_;
my $files;
{
my $iter = File::Next::files('lib');
while (defined(my $file = $iter->())) {
$files->{$file} = $file;
}
}
# following piece from Module::Build::Base::process_files_by_extension
while (my ($file, $dest) = each %$files) {
$self->copy_if_modified(from => $file, to => File::Spec->catfile($self->blib, $dest));
}
};
1;
Run Code Online (Sandbox Code Playgroud)
但为什么这么复杂呢?你真的想要share_dir。