Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: CLI Default Action

by liverpole (Monsignor)
on Apr 24, 2010 at 18:15 UTC ( #836694=note: print w/ replies, xml ) Need Help??


in reply to CLI Default Action

Hi Xiong,

    "What should the tool do?"

Whenever I write a command-line tool, (and unless it's a one-off, throwaway), I always make the tool print a syntax message if no arguments are specified.  For example:

use strict; use warnings; use File::Basename; use Getopt::Long; my $iam = basename $0; my $syntax = qq{ syntax: $iam [switches] <directory> Welcome to '$iam' -- the fabulous tool for doing [insert function description here]. Switches: -v ... display verbose output }; # Process switches with Getopt::Long here my $dir = shift or die $syntax;

It's as much for my benefit (when I forget in 6 months what I wrote the utility for) as for others' benefit.  I find it frustrating when someone writes a program that you have to "just know" to type "prog -\?" (or whatever) to get help.

Even if the program doesn't need any arguments at all, you can almost always think of some way of extending it (now, or in the future), which will make it sensible to allow at least one argument.  For example, if you're almost always operating on the current directory, it only takes 1 character to type '.' for the current directory, allows you to be flexible if a different directory is needed, and therefore makes it possible to print a syntax message when no arg is given.

Come to think of it, that addresses your other 3 questions, too.


s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/


Comment on Re: CLI Default Action
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://836694]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (2)
As of 2014-10-26 03:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (150 votes), past polls