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

Re: CLI Default Action

by liverpole (Monsignor)
on Apr 24, 2010 at 18:15 UTC ( [id://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$..$/

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (6)
As of 2024-04-19 08:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found