in reply to Re: Write a Perl module from scratch
in thread Write a Perl module from scratch
#!/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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Write a Perl module from scratch
by perrin (Chancellor) on Oct 14, 2008 at 16:35 UTC | |
by educated_foo (Vicar) on Oct 15, 2008 at 16:44 UTC |