Perl's POD (Plain Old Documentation) system provides the programmer with the ability to add user documentation into his programs - allowing a single source file to include:
* The program itself
* Comments for future programmers who read the source
* Documentation for the user
Convertors such as pod2html and pod2man extract the POD documentation from a Perl program and produce HTML and manual pages as required ... and there are other convertors too supplied with Perl or available for download from the CPAN.
Here's an idea for using POD (and the text conversion of it) to provide a usage line and documentation for a perl program also using pod ... a program that generates its own documentation, just using the standard elements of the Perl distribution to do so.
#!/usr/bin/perl
$usage = @ARGV; # Modify this line to suit allowed command line parameters
if ($usage) {
print STDERR "\nUsage: $0 [-h]\n\n";
die `pod2text $0`;
}
print "normal operation\n";
__END__
=head1 A program that documents itself
Here's a program that gives you a full
scale usage report when you run it ...
=cut
(written 2006-06-14, updated 2006-06-15)
Associated topics are indexed under
P219 - Perl - Libraries and Resources [3377] What do I mean when I add things in Perl? - (2011-08-02)
[3101] The week before Christmas - (2010-12-23)
[3009] Expect in Perl - a short explanation and a practical example - (2010-10-22)
[2931] Syncronise - software, trains, and buses. Please! - (2010-08-22)
[2427] Operator overloading - redefining addition and other Perl tricks - (2009-09-27)
[2234] Loading external code into Perl from a nonstandard directory - (2009-06-12)
[2229] Do not re-invent the wheel - use a Perl module - (2009-06-11)
[1865] Debugging and Data::Dumper in Perl - (2008-11-02)
[1863] About dieing and exiting in Perl - (2008-11-01)
[1444] Using English can slow you right down! - (2007-11-25)
[1391] Ordnance Survey Grid Reference to Latitude / Longitude - (2007-10-14)
[1235] Outputting numbers as words - MySQL with Perl or PHP - (2007-06-17)
[1219] Judging the quality of contributed Perl code - (2007-06-06)
[737] Coloured text in a terminal from Perl - (2006-05-29)
[712] Why reinvent the wheel - (2006-05-06)
[358] Use standard Perl modules - (2005-06-25)
[357] Where do Perl modules load from - (2005-06-24)
[112] Avoid the wheel being re-invented by using Perl modules - (2004-11-08)
[86] Talk review - Idiomatic Perl, David Cross - (2004-10-12)
P306 - Perl - Plain Old Documentation [668] Python - block insets help with documentation - (2006-04-04)
[242] Satisfaction of training - (2005-03-11)
Some other Articles
Journey planning - Xephos v Transport DirectMuch more that the world cupHuge data files - what happened earlier?Great new inventionsSelf help in PerlWatch your Google profileVery good for woodliceHorse and Python trainingSeeing the bricks for the treesUsing different URLs to navigate around a single script