%-4s
будет дополнять значение добавлением пробелов до тех пор, пока оно не займет четыре символа.
my $max_len = max map length, keys %hash;
for my $key (keys(%hash)) {
printf("%-{$max_len}s %s\n", $key, $hash{$key})
}
Вы можете использовать *
, чтобы указать printf
использовать параметр в качестве ширины поля.
my $max_len = max map length, keys %hash;
for my $key (keys(%hash)) {
printf("%*s %s\n", -$max_len, $key, $hash{$key})
}
или
my $max_len = max map length, keys %hash;
for my $key (keys(%hash)) {
printf("%-*s %s\n", $max_len, $key, $hash{$key})
}