Hi all,
I would like to have a shorter Build.PL for cases where a distribution
contains no modules. That is, it consists of just qw(Build.PL bin/foo)
(and maybe 't/basic.t'.)
At present, Build.PL requires these parameters:
dist_name => 'bin-foo',
dist_version => 'v0.0.1',
dist_author => 'Eric Wilhelm @ <ewilhelm at cpan dot org>',
dist_abstract => 'does some thing',
For a module-based distribution, those can all come from lib/foo.pm
given only a 'module_name' parameter. I would rather not duplicate
them if they are already in the 'bin/foo' pod.
So, I would like to add a 'program_name' parameter which behaves as if
you had said:
dist_name => 'bin-foo',
dist_version_from => 'bin/foo',
(And there's one nit involving ModuleInfo.pm's assumption about the main
package, but that can be fixed by explicitly passing the module
parameter.)
The requirement would be that '$bin::foo::VERSION' gets defined (I want
to discourage setting $main::VERSION) and that there is pod. Thoughts?
An example (bare minimum)
#!/usr/bin/perl
$bin::thing::VERSION = v0.0.1;
=head1 NAME
thing - a deal for stuff
=head1 AUTHOR
Eric Wilhelm @ <ewilhelm at cpan dot org>
=cut
# code goes here
Here's a more formalized example. The use of a bin::thing::main()
subroutine makes testing and refactoring easier.
#!/usr/bin/perl
package bin::thing;
$VERSION = v0.0.1;
use warnings;
use strict;
=head1 NAME
thing - a deal for stuff
=head1 AUTHOR
Eric Wilhelm @ <ewilhelm at cpan dot org>
=cut
sub main {
my (@args) = @_;
# meat of code goes here
}
package main;
if($0 eq __FILE__) {
bin::thing::main(@ARGV);
}
# vi:ts=2:sw=2:et:sta
my $package = 'bin::thing';
--Eric
--
To a database person, every nail looks like a thumb.
--Jamie Zawinski
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------