6.6 練習問題3
3. 問題2のプログラムを改造して、ユーザがカラムの幅を指定できるようにしてください。
よしきた。書いたコードはこちら。
print"入力された文字を、入力された列幅に右寄せで表\示するプログラムです。\n"; print "表\示したい文字を入力してください(半角英数)。\n入力はCtrl-Zキーで終了します。\n"; chomp(my @chars = <STDIN>); my $flag = 0; my $columns; while ($flag == 0){ print "列幅を入力してください(半角英数)。\n"; chomp($columns = <STDIN>); if (0 < $columns){ $flag = 1; }else{ print "列幅には1以上の数を入力してください。\n"; } } print "1234567890" x ($columns/10 + 1), "\n"; foreach (@chars){ printf "%$columnss\n", $_; }
留意点は、
printf "%${colums}s\n", $_;
この部分です。ブレースをデリミタとして変数名を囲まないと、
%$columnss\nとなり、インタプリタは
Global symbol "$columnss" requires explicit package nameというエラーを吐いてしまいます。変数columnssと認識してしまうのですね。
出力結果はこちらです。
入力された文字を、入力された列幅に右寄せで表示するプログラムです。
表示したい文字を入力してください(半角英数)。
入力はCtrl-Zキーで終了します。
Perl
Ruby
PHP
^Z
列幅を入力してください(半角英数)。
10
12345678901234567890
Perl
Ruby
PHP
よしよし。
7章以後は正規表現を取り扱うので、これからは1章から6章までざっと問題文の復習&チェックしていきます。