6.6 練習問題2
2. 文字列のリストを1行に1個ずつ別々に読み込んで、その文字列を20文字幅のカラムに右寄せで表示するプログラムを書いてください。出力が正しいカラムにあっていることを確認するために、目盛り付きの「物差し」も出力してください。
誤って19カラムで出力しないように注意しましょう。
19カラムで出力しないように注意しましょう、と書かれているのに案の定間違う。ショートカット構文にはchompは含まれていないことが身に染みてわかったので、いい反面教師になった。
書いたコードはこちら。
print "123456789012345678901234567890\n"; while (<>){ chomp; printf "%20s\n", $_; }
出力結果はこちら。
123456789012345678901234567890
perl
perl
ruby
ruby
php
php
^Z
む、練習問題中の出力イメージと全然違う!
少し考えて、
print "表\示したい文字列を入力してください。入力はCtrl-Zキーで終了します。\n"; chomp (my @chars = <STDIN>); print "123456789012345678901234567890\n"; foreach (@chars){ printf "%20s\n" , $_; }
メッセージ出力処理を加えて以上のコードで実行。結果は、
以上のようになりました。OK!
表示したい文字列を入力してください。入力はCtrl-Zキーで終了します。
perl
ruby
php
^Z
123456789012345678901234567890
perl
ruby
php