如何使用perl cgi为我的perl输出创建表?

时间:2017-05-18 05:33:11

标签: cgi

这是我的代码和输出我无法使用perl为每行创建不同的行?

这是我的代码:

;

我的PERL输出(I.E $ finalline)  桑卡尔  morien3

我得到了下表作为表格格式的输出:

   use strict;
    use warnings;
    use CGI;
    open(my $file1,"as.txt");
    my $firstline=<$file1>;
    $firstline=~s/.*=//g;
    my @words=split /,/,$firstline;
    my $finalline=join("\n",@words);
    close $file1;
    print "Content-type:text/html\n\n"
    print<<"EOF";
    <html><body>
    <table style="width:100%">
    <tr>
    <th>UserName</th>
    <th>Access</th>
    </tr>
    <tr>
    <td>$finalline</td>
    <td>
    <input type="checkbox" value="check2" mulitple checked>Read
    <input type="checkbox" value="check2" mulitple>Write
    <input type="checkbox" value="check2" mulitple>Owner
    </td>
    </tr>
    </table></body></html>
    EOF

预期产出:

UserName    Access
sankar morien3 Read Write Owner

输入文件:(即as.txt)

UserName    Access
sankar  Read Write Owner
morien3 Read Write Owner

1 个答案:

答案 0 :(得分:0)

您必须了解HTML布局的工作原理。

即使您的代码也未能在终端中提供您的预期结果。

在html \n中没有意义,<br>它适用于html中的新行。但是这种逻辑在你的代码中也不会起作用。

您正在使用\n加入数组,然后打印数据,它将逐行执行注释。

首先打印$finalline变量,结果是

sankar \n morien3  

\ n将不会在html中考虑。按照<td>

存储在一个单元格中

然后您将创建另一个包含权限详细信息的单元格。

最后,您的代码应如下所示。

#!/usr/bin/perl
use warnings;
use strict;
use CGI;

use CGI::Carp qw(fatalsToBrowser);

print "Content-Type: text/html \n\n";


open my $file1,"<","as.txt";
my $firstline=<$file1>;
$firstline=~s/.*=//g;
my @words=split /,/,$firstline;
close $file1;


print<<"EOF";
<html><body>
<table style="width:50%; ">
<tr>
<th style="text-align:left">UserName</th>
<th style="text-align:left">Access</th>
</tr>
EOF
foreach (@words)
{
print <<EOF;
<tr>
<td>$_</td>
<td>
<input type="checkbox" value="check2" mulitple checked>Read
<input type="checkbox" value="check2" mulitple>Write
<input type="checkbox" value="check2" mulitple>Owner
</td>
</tr>
EOF
}
print <<EOF;
</table></body></html>
EOF