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
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
2018-03-09 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

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