Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Help from the command line

by robsv (Curate)
on Feb 01, 2001 at 21:51 UTC ( #55761=snippet: print w/replies, xml ) Need Help??
Description: I've started adding a brief "self help" snippet in code that I write for others. This allows them to enter command -help from the command line and get the POD doc. We're still on Perl 5.005 here, so I'd guess that the warnings either don't appear in 5.6, or at least can be ignored with no warnings.
#!/usr/local/bin/perl -w

use strict;
use Getopt::Long;
use Pod::Text;

(my $PROGRAM = (split('/',$0))[-1]) =~ s/\..*$//;
my $USAGE = <<__EOT__;
Usage: $PROGRAM [-help]

my $HELP;

# Get the command-line parameters
GetOptions("help" => \$HELP)
  or die($USAGE);

if ($HELP)
  $^W = 0;  # Pod::Text throws warnings

# Continue with the rest of the program

# ********************************************************
# * POD documentation
# ********************************************************

=head1 NAME

helpme - an example of command-line help


helpme [-help]


Put your description here!


The following exit values are returned:

   0  Successful completion

  -1  An error occurred


Author: Elmer Fudd

Address bug reports and comments to:

Replies are listed 'Best First'.
Re: Help from the command line
by btrott (Parson) on Feb 01, 2001 at 22:36 UTC
    You might also want to check out Pod::Usage, which uses your POD to print out usage messages (similar in spirit to what your code does, but it doesn't print the entire POD).

    You can have it print out your SYNOPSIS section, and optionally an ARGUMENTS and/or OPTIONS section.

    Here's an example from the docs:

    use Getopt::Long; use Pod::Usage; my $man = 0; my $help = 0; ## Parse options and print usage if there is a syntax error, ## or if usage was explicitly requested. GetOptions('help|?' => \$help, man => \$man) or pod2usage(2); pod2usage(1) if $help; pod2usage(-verbose => 2) if $man; ## If no arguments were given, then allow STDIN to be used only ## if it's not connected to a terminal (otherwise print usage) pod2usage("$0: No files given.") if ((@ARGV == 0) && (-t STDIN)); __END__ =head1 NAME sample - Using GetOpt::Long and Pod::Usage =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<This program> will read the given input file(s) and do something useful with the contents thereof. =cut
Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://55761]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2017-10-22 04:02 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (272 votes). Check out past polls.