2010-04-29 77 views
2

我试图写一个简单的Perl CGI脚本:如何使用Perl将文件转换为HTML表格?

  • 运行的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 

任何帮助将非常感激。

+4

到目前为止,你有什么,它怎么不工作? – 2010-04-29 22:27:34

+1

这是功课吗? – Ether 2010-04-29 23:43:13

回答

0

这不会直接回答你的问题,但是可以使用AWK吗?包装整个内容应该不会太困难,然后用适当的html标签创建基本表格。

+3

是的,可以使用任何图灵完成语言来完成这项任务。尽管恕我直言,这种文本处理任务在Perl的舵手中是正确的。 – mob 2010-04-29 22:59:16

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; 
+0

作为一般规则,您应该在输出字符串之前对任何HTML元字符进行编码(例如'<' ->'<')。试试HTML :: Entities :: encode_entities。 – rjh 2010-04-29 23:26:10

+0

太好了,谢谢,我会试试看。不,不是作业,只是我正在研究的一个小项目,我真的不知道Perl :) – user329313 2010-04-30 03:06:08

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是一个良好的开端。

+0

我并不真正了解工作代码的downvote。 – 2010-05-03 05:53:19

相关问题