普通に
$ perl -e 'print while $_ = <STDIN>' hoge # 入力すると hoge # そのまま出力される あいうえお # 日本語入力も あいうえお # 日本語で出力される hoge^H^H # Ctrl+Hで戻ろうとしても戻れない hoge # "^H"は出力はされない あいうえお^H^H^H # 日本語の場合もおなじ あいうえお ho # Deleteキーを使えば消せる ho あいう # でも日本語だと変な消え方をする あい # 実際の表示と消えてる文字数が違ったり
という具合になり、日本語入力と削除でちょっとイケてないことになる。
カーソル移動もできない。
ここでTerm::ReadLineというモジュールがある。
どうやらこれは単なるインターフェースに過ぎないようで、自分の必要なReadLineモジュールを別途インストールして使う必要があるらしい。
Term::ReadLine::Gnuというモジュールがイケてるらしいので、それを入れてみる。
$ sudo span -i Term::ReadLine::Gnu
もしかするとインストールに失敗するかも。
portとかapt-getとかで入れる方が良いのかもしれない。よくわからない。
$ sudo port install p5-term-readline-gnu とか $ sudo apt-get install libterm-readline-gnu-perl
とか、そんなカンジで。
そうすると、イイカンジで標準入力ができるようになる。
$ perl -MTerm::ReadLine -le 'print while $_ = Term::ReadLine->new->readline()' hoge # 入力すると hoge # そのまま出力される あいうえお # 日本語入力も あいうえお # 日本語で出力される ho # Ctrl+Hで戻ることも ho あいう # 日本語も正しく扱える あいう
カーソル移動して挿入なんかもできる。すごく使いやすい。