初めてのPerl 第5章 練習問題3

ユーザーに長い幅を指定された際に、定規を伸ばす実装はできませんでした。

最終的な出力結果に至るまでのコードをコメントアウトし、記載しています。 以下プログラムになります。

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

use 5.010;

print "1行目では必ず、カラムを指定してください。\n";

#ユーザーがカラムを設定する
my $column = <STDIN>;
chomp($column);

print "次は表示させたい文字列を入力してください。\n";

#入力値を格納する。
my @list = <STDIN>;
chomp(@list);

#ものさしを表示する
#print "1234567890" * 6;
say "1234567890" x 6;

#ものさしに合わせて20字目に右揃えにしたい。
=pod
foreach my $line(@list){
  printf "%$columns\n",$line;
}

#推奨されている書き方
foreach my $line(@list){
  printf "%${column}s",$line;
}


foreach my $line(@list){
  printf "%${colum}"."s.\n";
}

foreach my $line(@list){
  print Dumper $line;
  printf '%'.$column.'s',$line;
}

foreach my $line(@list){
  printf "%".$column."s".$line."\n";
}

foreach my $line(@list){
  printf "%".$column."s".$line."\n";
}
=cut


foreach my $line(@list){
 print sprintf("%${column}s\n", $line);
}

以下が出力結果となります。

1行目では必ず、カラムを指定してください。
23
次は表示させたい文字列を入力してください。
hello
good-bye
123456789012345678901234567890123456789012345678901234567890
                  hello
               good-bye