Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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]
[Eily]: marto #SoSad
[holli]: duh
[marto]: I expect you to take a nice photo in Glasgow to replace this one :P
[Eily]: LanX yup, saw it when I checked your current rank
[LanX]: obviously the message is not clear enough if you only notice the onion now. ...
[Eily]: might have noticed before and forgotten
LanX has ideas for more similar pics
[LanX]: well I gimp ed a while to make it look natural
[LanX]: ... obviously too long
[Eily]: I yes, the natural onion in the flamming eye, I know what you mean

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (14)
As of 2017-12-14 16:25 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (398 votes). Check out past polls.