I have been planning on asking a similar question. In my case, I have an old .pl script which I still occasionally find useful. It requires a large number of sound (.wav) files which it plays by passing their path to "Windows Media Player" with exec. (Because of changes to the Player, it only works reliably on Windows XP. I hope to fix that.) Your suggestion to use build tools to manage the sound files seems like overkill. I have never even attempted to use Makefile.PL and have had only limited success with Build.PL.
Hi. I know it has been almost two months since I asked this, but I got frustrated then, so decided to let this sit for a while. So now I have calmed down a bit, I can dig in.
So, today I decided to give File::ShareDir a go on the command line, and I got the answer I was looking for initially. The main directory for external files a module needs is lib/auto. So now I know where to put the external data files and can use File::ShareDir to hopefully get them. I have not tried this yet but will shortly. Here is what I think the top of my module will look like, in this case I am using one of my favorites, Random::Color.
use Exporter qw(import);
use File::ShareDir qw(module_dir);
use Fancy::Rand qw(fancy_rand);
use Fancy::Open qw(fancy_open);
our $VERSION = '1.000';
our @EXPORT_OK = qw(random_color);
my $directory = module_dir('Random::Color');
my @Crayola_crayons = fancy_open("$directory/Crayola_crayon_colors.txt
my @MandMs = fancy_open("$directory/MandMs_colors.txt");