#!/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
In reply to Re^2: Write a Perl module from scratch
by educated_foo
in thread Write a Perl module from scratch
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |