NAME

App::Cmd::Plugin::Prompt - plug prompting routines into your commands

SYNOPSIS

In your app:

package MyApp;
use App::Cmd::Setup -app => {
  plugins => [ qw(App::Cmd::Plugin::Prompt) ],
};

In your command:

package MyApp::Command::dostuff;
use MyApp -command;

sub run {
  my ($self, $opt, $args) = @_;

  return unless prompt_yn('really do stuff?', { default => 1 });

  ...
}

SUBROUTINES

prompt_str

my $input = prompt_str($prompt, \%opt)

This prompts a user for string input. It can be directed to persist until input is 'acceptable'.

Valid options are:

  • input: optional coderef, which, when invoked, returns the user's response; default is to read from STDIN.

  • output: optional coderef, which, when invoked (with two arguments: the prompt and the choices/default), should prompt the user; default is to write to STDOUT.

  • valid: an optional coderef which any input is passed into and which must return true in order for the program to continue

  • default: may be any string; must pass the 'valid' coderef (if given)

  • choices: what to display after the prompt; default is either the 'default' parameter or nothing

  • no_valid_default: do not test the 'default' parameter against the 'valid' coderef

  • invalid_default_error: error message to throw when the 'default' parameter is not valid (does not pass the 'valid' coderef)

prompt_yn

my $bool = prompt_yn($prompt, \%opt);

This prompts the user for a yes or no response and won't give up until it gets one. It returns true for yes and false for no.

Valid options are:

default: may be yes or no, indicating how to interpret an empty response;
         if empty, require an explicit answer; defaults to empty

prompt_any_key($prompt)

my $input = prompt_any_key($prompt);

This routine prompts the user to "press any key to continue." ($prompt, if supplied, is the text to prompt with.

SEE ALSO

App::Cmd

AUTHOR

Ricardo SIGNES, <rjbs@cpan.org>

COPYRIGHT

Copyright 2004-2006 Ricardo SIGNES. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.