How to pass POD into a Subroutine
neversaint
created: 2006-04-03 06:20:09
Dear Masters,

Here is a code which use Getopt::Long to produce a help instruction. As can be seen below, I also want my code to print out the help message when no argument is passed. Thus, what I generally do is to use print command and pass them as subroutine usage().

I want to use POD instead of print method I have now. My question is how can I pass a POD construct into a subroutine?
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
use Getopt::Long;
use Pod::Usage;


my $some_param = 5; #Default value
my $help = 0;

if ( @ARGV == 0  ) {
    &usage();
    exit(1);
}

my $res = GetOptions (
                      "someparam|s=s"=>\$some_param,
                      "help"=> \$help,
                  );

&usage() if ($help);


if ($res) { 

    # Do sth with param  
    print "PARAM IS: $some_param\n";

}


sub usage {              
    print <

I'm at lost with this construct:

sub_usage_pod {

=head1 NAME

MYCODE - do something

=head1 SYNOPSIS

sample [options] [file ...]

 Options:
   -help            brief help message
   -man             full documentation

=head1 OPTIONS

=over 8

=item B<-help>

Print a brief help message and exits.

=item B<-man>

Prints the manual page and exits.

=back

=head1 DESCRIPTION

B will read the given input file(s) and do someting
useful with the contents thereof.

=cut

}



---
neversaint and everlastingly indebted.......
Re: How to pass POD into a Subroutine
created: 2006-04-03 06:32:30

See node 155288, which discusses how to use Pod::Usage to output the description of Perl scripts.

Re^2: How to pass POD into a Subroutine
created: 2006-04-03 08:25:22
Dear Masters,

Thanks a lot for the useful link. Now I have this code. But as stated in my OP, I still can't make my code below return a default man/help page when no parameter is passed. Is there a way to do it with Pod.
!/usr/bin/perl -w
use strict;
use Data::Dumper;
use Getopt::Long;
use Pod::Usage;


my $some_param = 5; #Default value
my $help;
my $man;

GetOptions(
    "someparam|s=s" => \$some_param,
    "help"          => \$help,
    "man"           => \$man,
  )
  or pod2usage( -verbose => 1 ) && exit;



pod2usage(-verbose => 2) && exit if defined $help;
pod2usage(-verbose => 2) && exit if defined $man;

# Do sth with param
print "PARAM IS: $some_param\n";

__END__
=head1 NAME

MYCODE - do something

=head1 SYNOPSIS

perl mycode.pl [options] [file ...]

 Options:
   -help            brief help message
   -man             full documentation

=head1 OPTIONS

=over 8

=item B<-help>

Print a brief help message and exits.

=item B<-man>

Prints the manual page and exits.

=back

=head1 DESCRIPTION

B will read the given input file(s) and do someting
useful with the contents thereof.

=cut



---
neversaint and everlastingly indebted.......
Re^3: How to pass POD into a Subroutine
created: 2006-04-03 08:30:17

Try this instead:

GetOptions(
    "someparam|s=s" => \$some_param,
    "help"          => \$help,
    "man"           => \$man,
);

pod2usage( -verbose => 1 ) unless defined $some_param;
pod2usage( -verbose => 2 ) if defined $help;
pod2usage( -verbose => 2 ) if defined $man;

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

perlmonks.org content © perlmonks.org and Corion, jeffa, neversaint

prlmnks.org © 2006 edmund von der burg (eccles & toad)

v 0.03