如何使用Perl将文件转换为HTML表?

时间:2010-04-29 22:26:33

标签: html perl

我正在尝试编写一个简单的Perl CGI脚本:

  • 运行CLI脚本
  • 读取生成的.out文件,并将文件中的数据转换为HTML表格。

以下是.out文件中的一些示例数据:

 10.255.202.1   2472327594  1720341
 10.255.202.21   2161941840  1484352
  10.255.200.0   1642646268  1163742
 10.255.200.96   1489876452  1023546
 10.255.200.26   1289738466   927513
 10.255.202.18   1028316222   706959
 10.255.200.36    955477836   703926

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

以下是未经测试的,可能需要大量抛光 但它给出了一个粗略的想法:

use CGI qw/:standard *table/;

print
  start_html('clicommand results'),
  start_table;

open(my $csvh, 'clicommand |');

while (<$csvh>) {
   print Tr(map { td($_) } split);
}

close($csvh);

print
  end_table,
  end_html;  

答案 1 :(得分:0)

这不能直接回答你的问题,但可以使用AWK吗?包装整个内容应该不会太难,然后每个列条目都带有相应的html标签来创建基本表。

答案 2 :(得分:0)

您很可能希望通过使用CSS样式表或向表格添加边框来使HTML更漂亮,但这是一个简单的开始。

#!/usr/bin/perl

use strict;
use warnings;

my $output = `cat dat`;
my @lines  = split /\n/, $output;

my @data;
foreach my $line (@lines) {
    chomp $line;
    my @d = split /\s+/, $line;
    push @data, \@d;
}

print <<HEADER;
<html>
<table>
HEADER

foreach my $d (@data) {
    print "\t", "<tr>";
    print map { "<td>$_</td>" } @$d;
    print "</tr>", "\n";
}

print <<FOOTER;
</table>
</html>
FOOTER

这会产生以下输出:

<html>
<table>
        <tr><td>10.255.202.1</td><td>2472327594</td><td>1720341</td></tr>
        <tr><td>10.255.202.21</td><td>2161941840</td><td>1484352</td></tr>
        <tr><td>10.255.200.0</td><td>1642646268</td><td>1163742</td></tr>
        <tr><td>10.255.200.96</td><td>1489876452</td><td>1023546</td></tr>
        <tr><td>10.255.200.26</td><td>1289738466</td><td>927513</td></tr>
        <tr><td>10.255.202.18</td><td>1028316222</td><td>706959</td></tr>
        <tr><td>10.255.200.36</td><td>955477836</td><td>703926</td></tr>
</table>
</html>

要了解如何修改HTML表格的外观,w3schools website entry on the table tag是一个好的开始。