printf で揃える

#!/usr/bin/perl

use strict;
use warnings;

my @host = (
    { 'hostname' => "host1",
      'size'     => 613475,
      'used'     => 16551 },
    { 'hostname' => "host2",
      'size'     => 613501,
      'used'     => 15214 },
);

printf "%-5s %8s %8s %8s %4s\n", "Host", "Size", "Used", "Avail", "Use%";

foreach (@host) {
    printf "%-5s %7dM %7dM %7dM %3d%%\n",
        $_->{hostname},
        $_->{size}, $_->{used},
        $_->{size} - $_->{used},
        $_->{used} / $_->{size} * 100;
}
$ ./printf.pl
Host      Size     Used    Avail Use%
host1  613475M   16551M  596924M   2%
host2  613501M   15214M  598287M   2%