2011年09月20日

リリースしました

 にひりずむ::しんぷる - IO::Prompt::Simple 0.01 リリースはてブ


あらすじ

  • xaicron:> ExtUtils::MakeMaker はロードに1秒ぐらいかかるから遅延ロードにしたた。prompt 使いたいだけなんだけど。IO::Prompt はなんかごついし、今後はコピペでいい気がしてきた。
  • tokuhir○m:> @xaicron IO::Prompt::Simpleの予感
  • xaicron:> @t○kuhirom srd!

というわけで適当にでっち上げた。

 xaicron/p5-IO-Prompt-Simple - GitHubはてブ

基本的には ExUtils::MakeMaker の prompt() と同じだけど、第三引数で指定した文字じゃないとダメとか、この正規表現にマッチしたやつじゃないとだめとかを設定できる感じ。

あとは、terminal に接続されてないっぽい場合*1には入力はスキップされて、デフォルトのやつが使われるようにとかそんな感じ。*2

使い方

use IO::Prompt::Simple;
say prompt 'そろそろ富士急ハイランド行きたいですね';
$ fujikyu.pl
そろそろ富士急ハイランド行きたいですね: そうですね[Enter]
そうですね

ってなります。簡単ですね。

デフォルトの指定

第二引数にデフォルト値も指定できます。何も入力せずに [Enter] を押したらデフォルト値が採用されます。

use IO::Prompt::Simple;
say prompt 'くやしい...!! でも?', '感じちゃう';
$ crimson.pl
くやしい...!! でも? [感じちゃう]: [Enter]
感じちゃう

EUMM と一緒ですね。

指定した文字だけ許可

anyone オプションを使用します。

use IO::Prompt::Simple;
say prompt 'あなたの好きな釘宮を選んでください', undef, {
    anyone => [qw/ルイズ ナギ 大河/],
};
あなたの好きな釘宮を選んでください (ルイズ/ナギ/大河) : 本人[Enter]
# Please answer `ルイズ` or `ナギ` or `大河`
あなたの好きな釘宮を選んでください (ルイズ/ナギ/大河) : ルイズ
ルイズ

という感じ。

正規表現にマッチする奴

regexp オプションを使用します。anyone とは排他的で、anyone が優先されます。

use IO::Prompt::Simple;
say prompt '4桁の数字を入れてください', undef, {
    regexp => '\d{4}', # or qr/\d{4}/,
};
4桁の数字を入れてください : [Enter]
# Please answer pattern (?-xism:\d{4})
4桁の数字を入れてください : 1234
1234

とかとか。

大文字小文字を区別しない

ignore_case を true にします。anyone と regexp で大文字小文字を無視するようになります。
ただし、regexp を文字列ではなく Regexp オブジェクトにしている場合は無効。

use IO::Prompt::Simple;
say prompt 'yes or no', undef, {
    anyone      => [qw/yes no/],
    ignore_case => 1,
};
$ yesno.pl
yes or no (yes/no) : YeS[Enter]
YeS

anyone が yes だからといって、小文字で返ってくるわけではないので注意。

エンコーディングを指定したい

入力された文字を encode で指定されたエンコーディングとみなして decode します。
anyone や regexp が指定されている場合、decode 後の文字でマッチングします。

use IO::Prompt::Simple;
say prompt 'encoding test', undef, { encode => 'cp932' };

入力待ちをしない

CLI を書いていると、prompt をスキップしたいことがあります。yum の -y みたいな感じで。
以下のような場合に、入力待ちをしなくなります。

  1. $ENV{PERL_IOPS_USE_DEFAILT} が true *3
  2. use_default オプションが true
  3. ターミナルから切り離されている

ターミナルから切り離されている状態と言うのは、例えば STDIN と STDOUT が close されているような場合です。
cpanm とかでも似たような感じのことをしてますね。

input と output 先を変えたい

ファイルハンドルなら何でも指定できます。
例えば input に __DATA__ を指定する場合は以下のようになります。

use IO::Prompt::Simple;
say prompt 'y or n', undef, {
    anyone => [qw/y n/],
    input  => *DATA,
};
__DATA__
y
$ using_data.pl
y or n (y/n) : y
y

上記のように、tty からではなければ、入力された値が出力されるので、log などに吐いている場合も後で見返せます。

まとめ

CLI をいっぱい書いてると、prompt 使いたいケースが結構あるので、外出ししてみました。
結果的に、EUMM+αで便利になったので良かったと思います。

まぁ、実際は IO::Prompt でそんなに困らないとは思いますが、ちょっとダミアン先生のコードは読みづらいし、微妙な機能とかがいっぱいあってうにゃーってなるので書いた次第。

-echo とかは便利だと思いますけど、/dev/tty とかハードコーディングされてたりして、Win32 でうごかないので mattn 先生に殺されるという話もあります。

もうちょい使ってみて問題なさげだったら CPAN に上げようかなと思います。

  • *1 : intaractive じゃない場合
  • *2 : EUMM にもこの機能はある
  • *3 : EUMM 由来
xaicron at 00:29コメント(95)Perl   このエントリーをはてなブックマークに追加
編集

コメント一覧

1. Posted by kata kata cinta   2013年12月21日 03:22

この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう!
2. Posted by nama bayi laki-laki   2014年02月21日 05:47
5 この記事は非常に興味深いものです
3. Posted by blog pakar seo   2014年02月22日 04:11
これは良いニュースですが、私は読んでいる
4. Posted by diakui   2014年02月26日 08:01
このウェブサイトの私の忠実な読者と再び会うおはようございます!
5. Posted by kata kata bijak   2014年03月07日 19:51
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
6. Posted by kata kata cinta   2014年03月07日 19:51
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
7. Posted by dp bbm bergerak   2014年03月25日 18:08
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
8. Posted by kata kata galau   2014年03月25日 18:09
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
9. Posted by kata kata romantis   2014年04月02日 05:40
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
10. Posted by kata kata cinta   2014年04月21日 22:30
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
11. Posted by Cerita Lucu   2014年04月23日 16:11
これは良いニュースですが、私は読んでいる
12. Posted by Jasa Fotocopy Murah   2014年04月23日 16:17
この記事は非常に興味深いものです
13. Posted by tempat wisata di bandung   2014年05月08日 01:59
これは実際に読むことは非常に興味深い記事です!
更新された場合に、より良く、より面白いかもしれ
14. Posted by blog remaja indonesia   2014年05月11日 04:38
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
15. Posted by operatorku   2014年05月12日 18:58
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
16. Posted by kata kata romantis   2014年05月19日 01:25
これは良いニュースですが、私は読んでいる
17. Posted by kata kata indah   2014年05月31日 16:53
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
18. Posted by kata kata lucu   2014年06月03日 07:48
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
19. Posted by cara menghilangkan jerawat   2014年06月03日 07:50
これは実際に読むことは非常に興味深い記事です!
更新された場合に、より良く、より面白いかもしれ
20. Posted by dunia remaja   2014年06月04日 08:52
非常に記事ここに有用な情報をたくさん見つける幸いです
21. Posted by cerita lucu   2014年06月04日 20:07
これは良いニュースですが、私は読んでいる
22. Posted by jasa fotocopy murah   2014年06月06日 11:07
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
23. Posted by pembaca   2014年06月10日 19:24
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
24. Posted by kata kata cinta romantis   2014年06月11日 02:03
非常に素晴らしいのニュース、インドネシアの国民の成功を読み、挨拶、私たちへの書き込みをありがとうございました
25. Posted by kata kata mutiara   2014年06月16日 05:10
ありがとうございます、あなたの文章が読み、非常に良いと面白いです
26. Posted by kata kata bijak   2014年06月16日 10:17
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
27. Posted by saatnya   2014年06月17日 10:39
観察する良いニュースと面白い!
28. Posted by kata kata cinta romantis   2014年06月19日 07:19
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、私は最新の記事を待っています、それを読むことは非常に満足しています。
29. Posted by dp bbm   2014年06月21日 03:29
この偉大な記事を教えてくれてありがとう
30. Posted by kata kata galau   2014年06月26日 16:17
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
31. Posted by pakar seo   2014年06月29日 23:15
プロのSEOようにSEOの専門家や専門家を学ぶ!
32. Posted by dunia remaja   2014年07月08日 20:35
この記事は非常に興味深いものです
33. Posted by resep kue   2014年07月14日 02:38
素晴らしい記事、ありがとうございました
34. Posted by kumpulan kata kata cinta romantis buat pacar   2014年07月19日 16:04
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
35. Posted by kata kata cinta   2014年08月11日 09:47
おまえらさぁ、なに簡単に煽られてんだよ。
36. Posted by jasa fotocopy murah   2014年09月05日 15:21
読み素敵で面白いの書き込み、ありがとうございました
37. Posted by hadirkanlah   2014年09月14日 23:04
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです。
38. Posted by Kata Kata Galau   2014年09月18日 08:00
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです
39. Posted by kata kata mutiara   2014年09月22日 16:33
非常に良いニュース、そして興味深い観察する
40. Posted by kata kata gombal   2014年09月24日 09:25
非常に良いニュース、そして興味深い観察する
41. Posted by jasa fotocopy murah   2014年09月25日 18:52
書き込みは、注意することは興味深い
42. Posted by tempat fotocopy dan percetakan   2014年09月26日 22:07
注意することは興味深く、良いニュースは、ありがとう
43. Posted by uda rino   2014年10月24日 03:23
ジャカルタの安いコピーや印刷の専門家
44. Posted by kata kata galau   2014年10月25日 02:36
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
45. Posted by kata kata bijak   2014年10月29日 20:01
賢明に言葉は常に我々の視点を維持し、鼓舞する
46. Posted by kang usman   2014年11月04日 20:30
インドネシアでのブログ更新した情報メディア
47. Posted by kata kata cinta   2014年11月12日 02:08
I’ve visited many blogs,forums, but this time:How your fantastic forum is . It makes me surprise….
48. Posted by kata kata cinta   2014年11月27日 00:35
の視点を維持し
49. Posted by hadirkanlah   2014年12月12日 22:22
このブログに興味深い記事が、私はこのブログ
50. Posted by kata kata galau   2014年12月13日 08:24
非常に良いニュース、そして興味深い観察す
51. Posted by Background Power point   2015年01月08日 04:57
これは良いニュースですが、私は読んでいる
52. Posted by jasa percetakan murah   2015年01月09日 22:24
2 この偉大な記事を教えてくれてありがとう
53. Posted by batu akik   2015年01月30日 00:08
私たちと一緒にこの情報を共有するための非常に興味深い感謝。
54. Posted by ucapan selamat ulang tahun   2015年02月18日 22:18
この記事では、私にとって非常に興味深いですが、私は間違いなくあなたのサイトをブックマークし、いつもここに新しい情報をチェックします。
55. Posted by KATA KATA TERLENGKAP   2015年03月31日 23:24
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
56. Posted by Kata Kata Cinta   2015年04月14日 21:37
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
57. Posted by cara mengkilapkan batu akik   2015年05月09日 00:31
私はこれに非常に感銘を受けました。すべては非常に明確な分類と非常にオープンです。私は、Webサイトのように好きですし、木箱は非常に便利です。
58. Posted by jasa fotocopy dan jasa percetakan murah 24 jam jakarta   2015年05月29日 22:56
これは良いニュースですが、私は読んでいる
59. Posted by Jasa Cetak Stempel Warna (Mark Stamp) Murah di Rawamangun Jakarta   2015年05月29日 22:57
インドネシアでのブログ更新した情報メディア
60. Posted by Jasa Cetak Stop map (Presentation Folder) Murah Rawamangun Jakarta   2015年05月29日 22:58
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
上記の情報を共有していただきありがとうございます...
62. Posted by kata kata sakit hati   2015年08月06日 21:39
私はいつも最高の仕事は、常にクリエイティブなライティングスキルとサニになることを願っています。
63. Posted by jasa percetakan murah   2015年08月18日 23:40
よろしく、私の忠実な読者と再びお会いしましょう!
64. Posted by cetak yasin online   2015年12月29日 16:47
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
65. Posted by Kata kata mutiara cinta   2016年01月26日 06:09
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、
66. Posted by Kata Kata Remaja   2016年03月06日 23:20
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
67. Posted by Percetakan Online   2016年03月13日 01:03
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、
68. Posted by Jasa Percetakan dan Jasa Fotocopy Murah 24 Jam Rawamangun Jakarta   2016年03月31日 01:05
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
69. Posted by Kata Kata Remaja   2016年04月11日 00:21
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
70. Posted by Kata Kata Remaja   2016年05月10日 01:29
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
71. Posted by pasang iklan gratis   2016年05月20日 21:07
あなたの情報は私にとって非常に有意義です
72. Posted by Kata Kata Remaja   2016年06月08日 06:27
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、
73. Posted by Jasa Percetakan dan Jasa Fotocopy Murah 24 Jam Rawamangun Jakarta   2016年06月21日 05:53
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
74. Posted by Kata Kata Remaja   2016年07月29日 13:53
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
75. Posted by Kata Kata Mutiara   2016年08月03日 02:40
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
76. Posted by Kata Kata Cinta   2016年08月13日 19:33
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、
77. Posted by Percetakan dan Fotocopy Murah Di Rawamangun   2016年09月25日 04:57
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
78. Posted by Kata Kata Galau   2016年10月01日 19:35
私はこれに非常に感銘を受けました。すべては非常に明確な分類と非常にオープンです。私は、Webサイトのように好きですし、木箱は非常に便利です。
79. Posted by Kata Kata Bijak   2016年10月12日 18:43
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
80. Posted by Blog Remaja Indonesia   2016年10月20日 00:58
私はこれに非常に感銘を受けました。すべては非常に明確な分類と非常にオープンです。私は、Webサイトのように好きですし、木箱は非常に便利です。
81. Posted by iklan gratis   2016年10月21日 20:19
これは良い記事と申し出ソリューションです
82. Posted by iklanluki   2017年06月04日 05:57
読者とこの知識を共有していただきありがとうございます
83. Posted by MURNI JAYA Printing   2017年09月27日 10:23
ログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足して
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
85. Posted by PERCETAKAN ANGKASA GRAFIKA   2017年11月30日 21:44
私はこれに非常に感銘を受けました。すべては非常に明確な分類と非常にオープンです。私は、Webサイトのように好きですし、木箱は非常に便利です。
86. Posted by DJ HENDRA R   2018年01月30日 23:39
ログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足して
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
ログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足して
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、私は最新の記事を待っています、それを読むことは非常に満足しています。
90. Posted by Free Download Lagu Mp3 Dugem House Music Nonstop Remix Terbaru   2018年06月04日 05:53
ログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足して
91. Posted by Print Percetakan Fotocopy Murah Dan Cepat Layanan 24 Jam Jakarta   2018年06月13日 08:14
このブログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足しています
ログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足して
93. Posted by Pasang Iklan Baris Gratis Tanpa Daftar Langsung Tampil   2018年08月24日 09:16
私は良い、有用な知識を得るのが好きです
94. Posted by Free Download Lagu Mp3 Dugem House Music Nonstop Remix Terbaru   2018年11月04日 23:39
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、私は最新の記事を待っています、それを読むことは非常に満足しています。
95. Posted by Jasa Fotocopy dan print Murah Cepat Layanan 24 Jam Jakarta   2018年11月19日 14:41
ログは非常に興味深いですが、私はこのブログを訪問するのは非常に満足して

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
  絵文字
 
 
プロフィール

Perlが少しだけ出来る気になってます。
JavaScriptはよくわかりません。
Rubyもちんぷんかんぷんです。
Pythonは難しいです。
ActionScript勘弁してください。
Javaあばばばばば。
低級言語できません。

github
記事検索
  • ライブドアブログ