Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Starting the development of a module : thoughts

by btrott (Parson)
on Jun 29, 2001 at 03:27 UTC ( #92498=note: print w/replies, xml ) Need Help??

in reply to Starting the development of a module : thoughts

Here are some additional thoughts/steps.

  • h2xs automatically creates a MANIFEST file. I don't use it; I delete it. I like using 'make manifest', because it automatically generates a MANIFEST file for me when I want it. To do this, set up a MANIFEST.SKIP file. Here's an example of a standard one I use:
    \bCVS\b ^MANIFEST\. ^Makefile$ ~$ \.old$ ^blib/ ^pm_to_blib$ \.tar\.gz$
    With this in place, I don't have to maintain a list of all my files; 'make manifest' will start at the current directory and assemble a list of all files not matching the patterns in MANIFEST.SKIP, then write the names of those files to MANIFEST.

    So, to create a new distribution, I can do:

    perl Makefile.PL make manifest make dist
    I keep my MANIFEST.SKIP under source control but that's not really necessary.

  • What is 'make build'? My Makefiles don't have a 'build' target.

  • You might also want to get into some of the interesting things you can do with a Makefile.PL. You can make it sort of a 'configure' for your distribution.

    As an example, the Makefile.PL for Net::SSH::Perl lets the user choose whether to install the prereqs for SSH-1 or SSH-2 (or both), which means that if the user really only wants SSH-1 support, he/she doesn't have to install a bunch of modules he/she doesn't need. Of course, this also means you have to learn to love using require in your code, for runtime loading of modules. :)

    Another useful Makefile.PL "trick" is to a "does user have this module installed?" function:

    sub have_mod { my($mod, $ver) = @_; eval("use $mod" . ($ver ? " $ver;" : ";")); !$@; }
    This allows you to do your own prerequisite checking in Makefile.PL, because unfortunately, the prereq checking in the CPAN module depends on having an explicit list of args to PREREQ_PM; it actually parses your Makefile.PL to look for such a list. If you have, for example, this:
    PREREQ_PM => \%prereq,
    then it won't pick up the list of prereqs correctly. So if that list is dynamic, then you may need to do your own checking.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://92498]
[hippo]: Download from https://metacpan. org/pod/CPAN and follow the instructions.
[Spenser]: I'm unable to install modules using cpan. it's not installed
[choroba]: What OS or distribution?
[hippo]: But as shmem says, CPAN has been in core since 5.004 so unless you are on a packaged system you probably have it installed already.
[Spenser]: It's a stripped down version on a NAS device.
[Spenser]: It's frustrating
[Spenser]: Perl 5.10.0
[Spenser]: It uses opkg to install software
[choroba]: 5.10.1 would be much better

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2018-03-17 12:38 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (224 votes). Check out past polls.