Previous Page
Next Page

10.13. Simple Prompting

Always prompt for interactive input.

There are few things more frustrating than firing up a program and then sitting there waiting for it to complete its task, only to realize after a few minutes that it's actually been just sitting there too, silently waiting for you to start interacting with it:

    
    # The quit command is case-insensitive and may be abbreviated...
    Readonly my $QUIT => qr/\A q(?:uit)? \z/ixms;

    # No command entered yet...
    my $cmd = $EMPTY_STR;

    # Until the q[uit] command is entered...
    CMD:
    while ($cmd !~ $QUIT) {
        # Get the next command...
        $cmd = <>;
        last CMD if not defined $cmd;


        
        # Clean it up and run it...
        chomp $cmd;
        execute($cmd)
            or carp "Unknown command: $cmd";
    }

Interactive programs should always prompt for interaction whenever they're being run interactively:

    
    # Until the q[uit] command is entered...

    CMD:
    while ($cmd !~ $QUIT) {
        
# Prompt if we're running interactively...
if (is_interactive( )) { print get_prompt_str( ); }
# Get the next command...
$cmd = <>; last CMD if not defined $cmd;
# Clean it up and run it...
chomp $cmd; execute($cmd) or carp "Unknown command: $cmd"; }

    Previous Page
    Next Page