GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  IO::PROMPT::SIMPLE (3)

.ds Aq ’

NAME

IO::Prompt::Simple - provide a simple user input

CONTENTS

SYNOPSIS



  # foo.pl
  use IO::Prompt::Simple;

  my $answer = prompt some question...;
  print "answer: $answer\n";

  # display prompt message, and wait your input.
  $ foo.pl
  some question: foo[Enter]
  answer: foo



DESCRIPTION

IO::Prompt::Simple is porting ExtUtils::MakeMaker’s prompt() function.

Added a few more useful features.

THIS MODULE IS ALPHA LEVEL INTERFACE!!

FUNCTIONS

    prompt($message, [$default_or_option])

Display prompt message and wait your input.



  $answer = prompt $message;



Sets default value:



  $answer = prompt sets default, default;
  is $answer, default;



or



  $answer = prompt sets default, { default => default };
  is $answer, default;



Display like are:



  sets default [default]: [Enter]
  ...



supported options are:
default: SCALAR Sets default value.



  $answer = prompt sets default, { default => default };
  is $answer, default;



anyone: ARRAYREF | HASHREF | REF-ARRAYREF | Hash::MultiValue Choose any one.



  $answer = prompt choose, { anyone => [qw/y n/] };



Display like are:



  choose (y/n) : [Enter]
  # Please answer `y` or `n`
  choose (y/n) : y[Enter]
  ...



If you specify HASHREF, returned value is HASHREF’s value.



  $answer = prompt choose, { anyone => { y => 1, n => 0 } };
  is $answer, 1; # when you input is y



And, when you specify the verbose option, you can tell the user more information.



  $answer = prompt choose your homepage, {
      anyone => {
          google => http://google.com/,
          yahoo  => http://yahoo.com/,
          bing   => http://bing.com/,
      },
      verbose => 1,
  };



Display like are:



  # bing   => http://bing.com/
  # google => http://google.com/
  # yahoo  => http://yahoo.com/
  choose your homepage : [Enter]
  # Please answer `bing` or `google` or `yahoo`
  choose your homepage : google[Enter]
  ...



If you want preserve the order of keys, you can use Hash::MultiValue.



  $answer = prompt foo, { anyone => { b => 1, c => 2, a => 4 } }; # prompring => `foo (a/b/c) : `
  $answer = prompt foo, {
      anyone => Hash::MultiValue->new(b => 1, c => 2, a => 4)
  }; # prompring => `foo (b/c/a) : `



Or, you can use REF-ARRAYREF.



  $answer = prompt foo, { anyone => \[b => 1, c => 2, a => 4] };



choices Alias of anyone
multi: BOOL Returned multiple answers. Your answer are evaluated separated by space.



  use Data::Dumper;
  @answers = prompt choices, {
      choices => [qw/a b c/],
      multi   => 1,
  };
  print Dumper \@answers;



Display like are:



  choices (a/b/c) : c a[Enter]
  $VAR1 = [
            c,
            a
          ];



Or, you can specify HASHREF:



  use Data::Dumper;
  @answers = prompt choices, {
      choices => {
          google => http://google.com/,
          yahoo  => http://yahoo.com/,
          bing   => http://bing.com/,
      },
      verbose => 1,
      multi   => 1,
  };
  print Dumper \@answers;



Display like are:



  # bing   => http://bing.com/
  # google => http://google.com/
  # yahoo  => http://yahoo.com/
  choices: google yahoo[Enter]
  $VAR1 = [
            http://google.com/,
            http://yahoo.com/
          ];



regexp: STR | REGEXP Sets regexp for answer.



  $answer = prompt regexp, { regexp => [0-9]{4} };



Display like are:



  regexp : foo[Enter]
  # Please answer pattern (?^:[0-9{4}])
  regexp : 1234
  ...



It regexp and anyone is exclusive (anyone is priority).

ignore_case: BOOL Ignore case for anyone or regexp.



  # passed `Y` or `N`
  $answer = prompt ignore_case, {
      anyone      => [qw/y n/],
      ignore_case => 1,
  };



yn: BOOL Shortcut of { anyone => \[ y => 1, n => 0 ], ignore_case => 1 }.



  $answer = prompt are you ok?, { yn => 1 };



Display like are:



  are you ok? (y/n) : y[Enter]



use_default: BOOL Force using for default value. If not specified defaults to an empty string.



  $answer = prompt use default, {
      default     => foo,
      use_default => 1,
  };
  is $answer, foo;



I think, CLI’s --force like option friendly.

input: FILEHANDLE Sets input file handle (default: STDIN)



  $answer = prompt input from DATA, { input => *DATA };
  is $answer, foobar;
  __DATA__
  foobar



output: FILEHANDLE Sets output file handle (default: STDOUT)



  $answer = prompt output for file, { output => $fh };



encode: STR | Encoder Sets encoding. If specified, returned a decoded string.
color: STR | ARRAYREF Sets prompt color. Using Term::ANSIColor.



  $answer = prompt colored prompting, { color => [qw/red on_white/] };



NOTE

If prompt() detects that it is not running interactively and there is nothing on $input or if the $ENV{PERL_IOPS_USE_DEFAULT} is set to true or use_default option is set to true, the $default will be used without prompting.

This prevents automated processes from blocking on user input.

AUTHOR

xaicron <xaicron {at} cpan.org>

COPYRIGHT

Copyright 2011 - 2012 xaicron.

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

ExtUtils::MakeMaker IO::Prompt
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 IO::PROMPT::SIMPLE (3) 2012-10-21

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.