Perl Printf Две строки с указанной длиной между - PullRequest
0 голосов
/ 18 июня 2020

Я печатаю строку, требующую форматирования. Я хотел бы напечатать f с заданным количеством символов, которые я сохранил в другой переменной, но я не уверен, как это сделать.

my $max_len = max map length, keys %hash;
printf ("%s %s\n", $string1, ":$string2");

Очевидно, это выводит string1 :string2, но я хочу, чтобы общая ширина первого столбца должна быть $ max_len. Как я могу это сделать?

1 Ответ

5 голосов
/ 18 июня 2020

%-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})
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...