如何将引用与Perl6::Form一起使用?

如何将引用与Perl6::Form一起使用?,perl,reference,Perl,Reference,我正在尝试使用打印表格数据,但不确定如何从哈希引用输出数据。以下是我迄今为止所做的尝试: #!/usr/bin/perl use Perl6::Form; my @alerts; push @alerts, { site => "192.168.0.1", status => "200", id => "QWE" }; push @alerts, { site => "192.168.0.2", status => "500", id => "QER"

我正在尝试使用打印表格数据,但不确定如何从哈希引用输出数据。以下是我迄今为止所做的尝试:

#!/usr/bin/perl
use Perl6::Form;

my @alerts; 

push @alerts, { site => "192.168.0.1", status => "200", id => "QWE" };
push @alerts, { site => "192.168.0.2", status => "500", id => "QER" };

print form
        ' ====================================== ',
        '| ID          |    SITE    | STATUS    |',
        '|-------------+------------+-----------|',
        '| {[[[[[[[[[} |{[[[[[[[[[} | {>>>>>>>} |',
           \@alerts{id}, \@alerts{site},\@alerts{status},
        ' ====================================== ';

您需要并行阵列

my @ids      = map { $_->{id}     } @alerts;
my @sites    = map { $_->{site}   } @alerts;
my @statuses = map { $_->{status} } @alerts;

print
   form
      '+=======================================+',
      '| ID          | SITE        | STATUS    |',
      '|-------------+-------------+-----------|',
      '| {[[[[[[[[[} | {[[[[[[[[[} | {>>>>>>>} |',
         \@ids,        \@sites,      \@statuses,
      '+=======================================+';
我们可以消除代码重复

my %dbf;   # Data by field
for my $field (qw( id site status )) {
   $dbf{$field} = [ map { $_->{$field} } @alerts ];
}

print
   form
      '+=======================================+',
      '| ID          | SITE        | STATUS    |',
      '|-------------+-------------+-----------|',
      '| {[[[[[[[[[} | {[[[[[[[[[} | {>>>>>>>} |',
         $dbf{id},     $dbf{site},   $dbf{status},
      '+=======================================+';

例如:
$alerts[0]->{site}
它应该给出
“192.168.0.1”
我想使用表单包,并打印所有条目,[。老实说,我不确定这样做是否可行。@Gregory Nisbet,这是一个Perl 5问题。Perl6::Form是Perl 5的一个模块(提供类似于Perl 6的表单)。