  | 
 
 
 
 |  
 |  | 
 
  
    | IO::Prompt::Simple(3) | 
    User Contributed Perl Documentation | 
    IO::Prompt::Simple(3) | 
   
 
IO::Prompt::Simple - provide a simple user input 
  # 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
 
IO::Prompt::Simple is porting ExtUtils::MakeMaker's
    prompt() function. 
Added a few more useful features. 
THIS MODULE IS ALPHA LEVEL INTERFACE!! 
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/] };
    
   
 
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. 
xaicron <xaicron {at} gmail.com> 
Copyright (C) 2011 Yuji Shimada (@xaicron). 
This library is free software; you can redistribute it and/or
    modify it under the same terms as Perl itself. 
ExtUtils::MakeMaker IO::Prompt 
 
 
  Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
  |