好吧,我正在尝试制作一个HTML表来显示我的系统上的finger命令的一些结果,但是我得到了一个空白空间的前导列,我无法弄清楚如何删除。这是我正在使用的代码。
#!/usr/bin/perl;
use Modern::Perl;
use CGI::Carp qw/fatalsToBrowser/;
use CGI qw/:standard *table *Tr/;
my @fingeroutput = `finger`;
my @info;
my @td;
foreach my $finger (@fingeroutput){
$finger =~ /(\w+)\s+(\w*\s\w*)\s+(\w+\/\d+)\s+(\d*d*:*\d*)\s+(\w+\s\d+\s\d+:\d+)\s(.+)/;
push (@info, ("$1", "$2", "$4", "$6") );
}
while (my @data = splice @info, 0, 4 ) {
push @td, td( \@data );
}
print header(), start_html(-title=>'Basic Stuff');
print start_table({-border=>2, width=>"50%"});
print th([ 'Login', 'Name', 'Idle', 'Host']);
foreach my $row ( @td ) {
print start_Tr;
print td ( $row );
print end_Tr;
}
print end_table;
print end_html();
我遇到的第一个问题是当表打印出来时,第一行总是一行空格。
我的第二个问题是登录列出现所有空白区域,并且所有数据都向右移动了一个单元格,而我的主机部分位于没有标题的列中。
这是我第一次使用CGI和HTML表格,所以我做了很多研究来达到这一点。唯一剩下的就是让表格格式正确。我做错了什么?
答案 0 :(得分:0)
第二个问题原来是在这段代码中:
while (my @data = splice @info, 0, 4 ) {
push @td, td( \@data );
}
将其更改为:
while (my @data = splice @info, 0, 4 ) {
push @td, ( \@data );
}
我摆脱了额外的领先专栏。我仍然无法弄清楚为什么我要开始一桌空行。
我快速修复了添加
shift @td;
如果有人能够看到为什么我在第一时间获得那个有用的空行。是因为我从一开始就使用推送将数据输入阵列吗?