ハッシュレファレンスをsprintfでフォーマットしてprintする
課題
こういうハッシュレフを
my $my_info = { name => 'Masato', tall => 169, mass => 55, food => 'Sushi', };
こうやってプリントしたい。
Name Tall Mass Age Food Masato 169 55 33 Sushi
やり方
sprintf関数とハッシュスライスを使う。
sprintf関数の使い方
説明は以下のページがわかりやすい。
sprintf関数 - 文字列の書式指定 - Perlゼミ(サンプルコードPerl入門)
まず、ヘッダーをsprintfで出すにはこうすればできる。
my $format = "%-12s %-7s %-7s %-7s %-7s"; printf $format, qw(Name Tall Mass Age Food);
$format
はsprintf関数の第一引数に渡す書式だ。%-12s
などというのは左詰のxx固定長と解釈される。よってこの例は左詰で12文字の固定長になる。長さは実際にプリントする文字列に合わせる。
ハッシュスライス
printf $format, @$hash_ref{ qw(name tall mass age food) };