Посмотрите на Perl6 :: Форма .
Это рекомендуемый подход к использованию формата . См. Этот предыдущий ответ о переполнении стека: Какие другие языки имеют функции и / или библиотеки, подобные формату Perl?
Вот пример того, как Perl6 :: Form делает то, что вы хотите с вашими данными:
use Perl6::Form;
my ($time, $name, $number);
my @data = (
[ qw(09:08:11 XXXXXXXXXXXXX 1.1.1.1) ],
[ qw(09:09:03 YYYYYYYY 2.2.2.2) ],
[ qw(09:12:37 ZZZZ 3.3.3.3) ],
);
for my $line (@data) {
push @$time, $line->[0];
push @$name, $line->[1];
push @$number, $line->[2];
}
print form
'{[[[[[[} {[[[[[[[[[[[[[[[[[[[[} {[[[[[[}',
$time, $name, $number;
NB. Если ваши поля данных станут больше, чем указанные поля формы, вы столкнетесь с проблемами форматирования (и то же самое относится и к решениям sprintf и форматирования).
Это легко исправить в зависимости от ваших требований к выходу. Например, если вы хотите сохранить стабильность таблицы, тогда ...
print form { layout => 'tabular' },
'{[[[[[[} {[[[[[[[[[[[[[[[[[[[[} {[[[[[[}',
$time, $name, $number;
... будет заключать в слова каждый столбец для вас.