neversaint has asked for the wisdom of the Perl Monks concerning the following question:

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 <<HELP; mycode.pl version 1.00 Copyright (C) 2006 by MONKFAN; all rights reserved Usage: perl $0 [-options] Options are: -h Print this help -s Some param HELP exit; }
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 -s Some param -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<This program> will read the given input file(s) and do someting useful with the contents thereof. =cut }


---
neversaint and everlastingly indebted.......

Replies are listed 'Best First'.
Re: How to pass POD into a Subroutine
by Corion (Patriarch) on Apr 03, 2006 at 10:32 UTC
      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<This program> will read the given input file(s) and do someting useful with the contents thereof. =cut


      ---
      neversaint and everlastingly indebted.......

        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)