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$..$/

In reply to Re: CLI Default Action by liverpole
in thread CLI Default Action by Xiong

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.