初めてのPerl 第6章
練習問題をメモ。
ex06-1
#!/usr/bin/perl use strict; print reverse <>;
ex06-2
#!/usr/bin/perl use strict; ## 1行づつ読むバージョン #print ((0..9) x 2, "\n"); # while (<>) { # chomp; # printf "%20s\n", $_; # } ## 一気読みバージョン chomp(my @lines = <>); print ((0..9) x 2, "\n"); foreach (@lines) { printf "%20s\n", $_; }
ex06-3
#!/usr/bin/perl use strict; # ## 1行づつ読むバージョン # print "Enter a column width: "; # chomp(my $column = <STDIN>); # print ((0..9) x (($column+9)/10), "\n"); # while (<>) { # chomp; # printf "%${column}s\n", $_; # } ## 一気読みバージョン print "Enter a column width: "; chomp(my $column = <STDIN>); chomp(my @lines = <>); # 正しいものさし print ((0..9) x (($column+9)/10), "\n"); # 間違ったものさし # if ($column >= 10) { # print ((0..9) x ($column / 10), "\n"); # } else { # print ((0..9), "\n"); # } foreach (@lines) { printf "%${column}s\n", $_; }
反省点
最初、ex06-1 で入力行を chomp しなかったので、改行文字分の空白文字が表示されてしまった。
ものさしを指定した長さで表示する問題は、0から1、10から11などの境界値を意識すると考えやすいのかもしれない。