You may or may not care to peruse the underdocumented Getopt::Plus,
which has similar aims to scriptalicious, but quite a different approach.

Mx.

>-----Original Message-----
>From: Sam Vilain [mailto:[EMAIL PROTECTED] 
>Sent: Thursday, April 08, 2004 7:57 AM
>To: [EMAIL PROTECTED]
>Subject: New module: Scriptalicious
>
>
>Hi all,
>
>I've decided that instead of helping the Perl world by single-handedly 
>spearheading one of the most ambitious tasks to ever hit CPAN, 
>I'm going 
>to help contribute to its gradual decline by releasing yet another 
>reinvented wheel.  Muhahaha!  Didn't see that coming, did you?
>
>The program listed in the manual page displays the following when run 
>with `-h' :
>
>pu - an uncarved block of wood
>
>Usage: pu [options] arguments
>
>  This script's function is to be a blank example that many 
>great and  simple scripts may be built upon.
>
>  Remember, you cannot carve rotten wood.
>
>Command line options:
>
>  -h, --help            Display a program usage screen and exit.
>  -V, --version         Display program version and exit.
>  -v, --verbose         Verbose command execution, displaying things
>                        like the commands run, their output, etc.
>  -q, --quiet           Suppress all normal program output; only
>                        display errors and warnings.
>  -d, --debug           Display output to help someone debug this
>                        script, not the process going on.
>
>See `perldoc t/pu.pl' for more information.
>
>Here is the man page for Scriptalicious:
>
>NAME
>       Scriptalicious - Delicious scripting goodies
>
>SYNOPSIS
>        use Scriptalicious
>             -progname => "pu",
>             -version => $VERSION;
>
>        my $url = ".";
>        getopt("u|url" => \$url);
>
>        run("echo", "doing something with $url");
>        my $output = capture("svn", "info", $url);
>
>        __END__
>
>        =head1 NAME
>
>        pu - an uncarved block of wood
>
>        =head1 SYNOPSIS
>
>        pu [options] arguments
>
>        =head1 DESCRIPTION
>
>        This script's function is to be a blank example that many
>        great and simple scripts may be built upon.
>
>        Remember, you cannot carve rotten wood.
>
>        =head1 COMMAND LINE OPTIONS
>
>        =over
>
>        =item B<-h, --help>
>
>        Display a program usage screen and exit.
>
>        =item B<-V, --version>
>
>        Display program version and exit.
>
>        =item B<-v, --verbose>
>
>        Verbose command execution, displaying things like the
>        commands run, their output, etc.
>
>        =item B<-q, --quiet>
>
>        Suppress all normal program output; only display errors and
>        warnings.
>
>        =item B<-d, --debug>
>
>        Display output to help someone debug this script, not the
>        process going on.
>
>        =back
>
>DESCRIPTION
>       This module helps you write scripts, quickly.  Just 
>include the above
>       as a template.  Unfortunately, it is not possible to 
>have a `use'
>       dependency automatically add structure to your POD yet, so you 
>have to
>       include the above manually.
>
>       To avoid all that unnecessary explicit importing of 
>symbols, the fol-
>       lowing symbols and functions are exported into the caller's 
>namespace:
>
>       getopt(@getopt_args)
>           This just calls Getopt::Long::GetOptions (see 
>Getopt::Long for
>           details).  It automatically adds to the arguments 
>you give it 
>some
>           "standard" command line options.
>
>       $VERBOSE
>           Set to 0 by default, and 1 if "-v" or "--verbose" was found 
>during
>           the call to "getopt()".  Extra "-v"'s or "--debug" 
>will push this
>           variable higher.  If "-q" or <--quiet> is 
>specified, this will be
>           less than one.
>
>       $PROGNAME
>           It is recommended that you only ever read this 
>variable, and pass
>           it in via the import.  This is not automatically extracted 
>from the
>           POD for performance reasons.
>
>       getopt(@getopt_args)
>           Fetch arguments via "Getopt::Long::GetOptions".  
>The "bundling"
>           option is enabled by default - which differs from the 
>standard con-
>           figuration of Getopt::Long.  To alter the 
>configuration, simply
>           call "Getopt::Long::config".  See Getopt::Long for 
>more informa-
>           tion.
>
>       say "something"
>           Prints a message to standard output, unless quiet 
>mode ("-q" or
>           "--quiet") was specified.  For normal program messages.
>
>       mutter "progress"
>           Prints a message to standard output, if verbose 
>mode ("-v") or
>           debug mode ("-d") is enabled (ie, if "$VERBOSE > 0").  For 
>messages
>           designed to help a user of the script to see more 
>information 
>about
>           what is going on.
>
>       whisper "detail"
>           Prints a message to standard output, if debug mode ("-d") is
>           enabled or multiple verbose options were passed (ie, if 
>"$VERBOSE >
>           1").  For messages designed to help a person 
>debugging the script
>           to see more information about what is going on 
>internally to the
>           script.
>
>       abort "won't go to sea in a storm"
>           Prints a short program usage message (extracted 
>from the POD 
>synop-
>           sis) and exits with an error code.
>
>       moan "weather is miserable"
>           Prints a warning to standard error.  It is preceded 
>with the text
>           "warning:".  The program does not exit.
>
>       barf "hit an iceberg"
>           Prints a warning to standard error.  It is preceded 
>with the text
>           "warning:".  The program does not exit.
>
>       run("command", "arg1", "arg2")
>           Runs a command or closure, barf's with a relevant error 
>message if
>           there is a problem.  Program output is suppressed unless 
>running in
>           verbose mode.
>
>       run_err("command", "arg2", "arg1")
>           Same as run, but returns the error code rather than 
>assuming that
>           the command will successfully complete.  Again, 
>output it sup-
>           pressed.
>
>       capture("command", "1gra", "2gra")
>           runs a command, capturing its output, barfs if there is a 
>problem.
>           Returns the output of the command as a list.
>
>       capture_err("command", "foo")
>           Works as capture, but the first returned item is the error 
>code of
>           the command ($?) rather than the first line of its output.
>
>           Usage:
>
>              my ($rc, @output) = capture_err("somecommand", @args);
>
>AUTHOR
>       Sam Vilain, [EMAIL PROTECTED]
>
>-- 
>Sam Vilain, sam /\T vilain |><>T net, PGP key ID: 0x05B52F13 
>(include my PGP key ID in personal replies to avoid spam filtering)
>

Reply via email to