У меня никогда не было желания узнавать о форматах. Это плохой ответ, потому что я не могу предложить какую-либо информацию о вашей проблеме и / или потенциальных решениях, но другие уже сделали это. Я собираюсь предложить два предложения для замены.
Первый, Perl6::Form
должен быть полезен как лучше format
, хотя я никогда не использовал его, пока не собрал этот пример сегодня. С другой стороны, я использовал Text::Table
, и это очень полезно для создания таблиц в виде простого текста (большую часть времени я просто генерирую HTML, но электронная почта по-прежнему остается одним из тех мест, где простой текст явно лучше).
#!/usr/bin/perl
use strict;
use warnings;
use Perl6::Form;
my @data = (
['127.0.0.1', 'Johnny Smithey', 'JLNSJIV', 14, 5],
['127.0.0.2', 'Ömer Seyfettin Şınas', 'OSS3', 25, 5],
);
for my $data_ref ( @data ) {
print format_data($data_ref);
}
sub format_data {
my ($data) = @_;
return form
'{<<<<<<<<<<<<<<<} {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} ' .
'{<<<<<<<<<<} {<<<<<<<<<<<<<<} {>>}',
@$data;
}
#!/usr/bin/perl
use strict;
use warnings;
use Text::Table;
my %common_options = (
align => 'left',
title_align => 'center',
);
my $sep = \' ';
my $table = Text::Table->new(
{
title => 'IP Address',
sample => '<' x 15,
%common_options,
},
$sep,
{
title => 'Full Name',
sample => '<' x 34,
%common_options,
},
$sep,
{
title => 'RID',
sample => '<' x 10,
%common_options,
},
$sep,
{
title => 'Since',
sample => '<' x 14,
%common_options,
},
$sep,
{
title => 'Times',
sample => '>' x 2,
align => 'right',
title_align => 'center'
},
);
$table->rule('');
$table->load(
['127.0.0.1', 'Johnny Smith-Jones', 'JLNSJIV', '20090814010203', 5],
['127.0.0.2', 'Ömer Seyfettin Şınas', 'OSS3', '20071211101112', 3],
['192.168.172.144', 'Jane Doe', 'JD156', '20080101010101', 1],
);
print $table->table;