use encodingとの挙動のおかしさ
研究室の同期がPerlでハマる
use encoding 'shift-jis'; print "文字列を入力してください:"; my $str = <STDIN>; print "文字列の長さ:".length($str)."\n";
実行すると,「文字列を入力してください」が表示される前に標準入力の受付状態になってしまい
入力を完了してから
ほげ 文字列を入力してください:文字列の長さ:2
と表示される.
原因は不明だけれど,なんとなく
print "文字列を入力してください:\n";
と改行を入れるようにしたら意図どおりの動作をした.
おそらくCでのgetchar(), getche()関数のあたりの話と同じで
バッファの端に改行文字があるとうんちゃらってことなのかな?
まぁ実際問題でこの問題を解決しないと前に進めないケースは少ないので
あくまでこういうことがあるよという知見を得るに留める.