| [reply] |
It's more up-to-date with current practices for CPAN. It can generate Module::Build support, makes better starter tests, generates the YAML file, has stub POD that's more useful for modern OO modules, etc. h2xs also generates some strange file layouts, as discussed here in the past.
| [reply] |
Better yet, if you want to write more than about 2 modules, just write your own. h2xs adds more useless junk with every Perl release, and Module::Starter seems no better. When you write your own, you type in all and only the boilerplate you want when you write it, and you don't have extraneous garbage inserted when you create future modules. Here's what I use:
#!/usr/bin/env perl
use Getopt::Long;
$ME = q|WHATEVER|;
sub usage
{
print STDERR <<'EOS';
Usage: newmod.pl [-u 'Name <user@host>'] Module::Name
EOS
exit 1;
}
GetOptions('user:s' => \$ME) && @ARGV == 1 or usage;
$mod = shift;
($dir = $mod) =~ s/::/-/g;
mkdir $dir or die $!;
chdir $dir;
sub cat
{
my $o = shift;
open OUT, ">$o" or die $!;
print OUT $_ for @_;
close OUT;
}
($file = $mod) =~ s/.*:://;
cat 'Makefile.PL', <<EOS;
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => '$mod',
VERSION_FROM => '$file.pm',
PREREQ_PM => { },
(\$] >= 5.005 ? ## Add these new keywords supported since 5.00
+5
(AUTHOR => q|$ME|) : ()),
ABSTRACT => 'Something.',
);
EOS
cat "$file.pm", <<EOS;
package $mod;
=head1 NAME
$mod -- Whatever it does...
=head1 SYNOPSIS
=cut
\$VERSION = '0.01';
1;
__END__
=head1 DESCRIPTION
=head1 AUTHOR
${ME}
Bug reports welcome, patches even more welcome.
=head1 COPYRIGHT
Copyright (C) $y $ME. All rights reserved, some wrongs reversed.
This module is distributed under the same terms as Perl itself.
=cut
EOS
cat "test.pl", <<EOS;
use Test::Simple tests => 1;
use $mod;
ok(1, 'loaded');
EOS
(undef, undef, undef, $d, $m, $y) = localtime;
$y += 1900;
cat "ChangeLog", <<EOS;
$y-$m-$d $ME
* original version; created by newmod.pl
EOS
cat "README", <<EOS;
$mod version 0.01
INSTALLATION
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
COPYRIGHT AND LICENSE
Copyright (C) $y, $ME
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
EOS
cat 'MANIFEST', <<EOS;
Makefile.PL
MANIFEST
README
test.pl
$file.pm
EOS
| [reply] [d/l] |
That looks fine, but Module::Starter is totally customizable. Search CPAN for examples of what others have done.
| [reply] |
Yikes! Still, this was only 123 lines of code that took me less than an hour to write. It would probably take me at least as much time just to read and understand Module::Starter's docs, or to figure out which of the custom extensions is closest to what I want and to customize it. I still think your best bet is to run "h2xs -AXn," delete the junk you don't need, and create a script to produce the stuff that is left.
| [reply] |