casiano has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks

Where is the right place to put default configuration files in my module distribution in order to guarantee that they will be accesible when the distribution is installed (make install, etc.) whatever the final operating system is?

What is the "best recommended practice" for this issue?

Shall I use modules with a DATA (i.e. __END__) section? Is that correct?

Thanks

Casiano

Replies are listed 'Best First'.
Re: Where is the right place to put default configuration files in a module distribution?
by oko1 (Deacon) on Mar 21, 2008 at 15:57 UTC

    You could always take the approach used by, e.g., CPAN.pm - write another "module" (essentially, a .pm file with a simple wrapper around your config data) in the same directory where the module itself is going to live. That's a fairly elegant solution. It's also one that allows you to "brute-force" things when the built-in config tools aren't doing the right thing - something I've often found myself appreciating in the past. In the worst case, I could just blow away Config.pm and redo the config from scratch.

    The __DATA__ section... eh. I've written self-modifying scripts in the past, and found that to be a crude and fragile approach.

Re: Where is the right place to put default configuration files in a module distribution?
by eyepopslikeamosquito (Archbishop) on Mar 21, 2008 at 23:17 UTC

    I had the same problem when writing Acme::EyeDrops. I used the handy __FILE__, after I noticed its use in the Perl core Net::Config module. From Net/Config.pm:

    my $file = __FILE__; $file =~ s/Config.pm/libnet.cfg/;
    This trick ensures that the configuration file, libnet.cfg in the example above, resides in the same directory as the Config.pm module.

Re: Where is the right place to put default configuration files in a module distribution?
by casiano (Pilgrim) on Mar 22, 2008 at 11:08 UTC
    Just to say thanks for your answers

    Have been most helpful

    Casiano