I've written a program which is distributed as a single script, but implemented as a series of modules. Distributing the script as one file avoids the need to "install", or mess with include-paths.
Unfortunately this means that my script looks like this:
# ... pod for module1
# ... code for module1
# ... POD for module2
# .... code for module2
# package main
# pod
# code
This screws up my preferred usage of POd::Usage, as it shows the pod for all the script. I've read the documentation for Pod::Usage, where it suggets using Pod::Find and the current package (__PACKAGE__) but I cannot make it work, as the following demonstrates.
Is there a simple solution, or am I out of luck?
Test program follows:
#!/usr/bin/perl -w
use strict;
use warnings;
use Getopt::Long;
use Pod::Find qw(pod_where);
use Pod::Usage;
=head1 NAME
Foo - Do something.
=cut
=head1 SYNOPSIS
use strict;
use Foo;
my $f = Foo->new();
$f->doStuff();
=cut
=head1 DESCRIPTION
This class encapsulates stuff.
=cut
package Foo;
=head2 new
Constructor
=cut
sub new()
{
my ( $proto, %supplied ) = (@_);
my $class = ref($proto) || $proto;
my $self = {};
bless( $self, $class );
return $self;
}
=begin doc
Do stuff
=end doc
=cut
sub do_stuff()
{
}
=head1 NAME
My Script - Do something
=cut
=head1 SYNOPSIS
Usage:
$0 [options]
options
--help Show the help
--man Show the manual.
=cut
=head1 DESCRIPTION
This is the utility to do stuff .. It uses the Foo module internally.
=cut
package main;
#
# Configuration variables
#
my %CONFIG;
#
# Parse the command line.
#
exit
if (
!Getopt::Long::GetOptions(
# Help options
"help", \$CONFIG{ 'help' },
"manual", \$CONFIG{ 'manual' },
) );
Pod::Usage::pod2usage() if ( $CONFIG{ 'help' } );
Pod::Usage::pod2usage(-verbose => 2 ) if ( $CONFIG{ 'manual' } );
print "I am alive\n";
exit( 0 );
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.