2005/12/21 更新
ActivePerl 5.8.x を使っている場合は、コマンドラインから以下のコマンドを入力してください。
> ppm install http://homepage3.nifty.com/k-takata/mysoft/Term-ReadPassword-Win32.ppd
インストール後は、以下のコマンドで ActivePerl のドキュメントを更新することができます。
> perl -MActivePerl::DocTools -e UpdateHTML
名前 Term::ReadPassword::Win32 - ユーザーにパスワードを尋ねる (Win32 用) 概要 use Term::ReadPassword::Win32; while (1) { my $password = read_password('password: '); redo unless defined $password; if ($password eq 'flubber') { print "Access granted.\n"; last; } else { print "Access denied.\n"; redo; } } 説明 このモジュールは、Term::ReadPassword と同じように、ユーザーに対して パスワードを尋ねます。 ユーザーに対してパスワードの入力を求めるには、Term::ReadPassword を 使うのがよい方法ですが、Term::ReadPassword は Windows 用の ActivePerl では動かないという問題があるため、それを解決するためにこのモジュールを 書きました。 このモジュールは、Windows と Unix のどちらでも使えます。 Windows で使うには、Win32::* のモジュールが必要です。 Unix で使うときは、 このモジュールは Term::ReadPassword に対するラッパーとして動作します。 Term::ReadPassword::Win32::read_password 関数は、 Term::ReadPassword::read_password 関数とほとんど同じように動作します。 最初と2番目のパラメータは、全く同じです。最初のパラメータは、プロンプト として表示する文字列を指定し、2番目のパラメータは、タイムアウト値を秒単 位 で指定します。 3番目のパラメータは、少々異なっています。 3番目のパラメータが 0 のときは、Ctrl+C は他の文字と全く同じように、 入力バッファに格納されます。これは Term::ReadPassword::read_password の 3番目のパラメータに false を指定したときの動作と同じです。 3番目のパラメータが 1 のときは、Ctrl+C または Esc が入力されると パスワードの入力を終了します。Term::ReadPassword::read_password の 3番目のパラメータに true を指定したときの動作と似ていますが、Esc でも 入力を終了できる点が異なっています。 3番目のパラメータが 2 のときは、Esc が入力されるとパスワードの入力を 終了します。Ctrl+C が入力された場合は、おそらくプログラムが中断 されます。 Ctrl+U が入力されると、入力バッファはクリアされます。 バグ マルチバイト文字は正しく扱われません。(マルチバイト文字を1文字削除する 場合に BackSpace を複数回入力する必要があります。) 参考 Term::ReadPassword, Term::Getch 著作権 Copyright (C) 2005 Ken Takata <kentkt@anet.ne.jp> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. ダウンロード 最新版は、 http://webs.to/ken/ から入手できます。