免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: huanghaojie
打印 上一主题 下一主题

cgi perl里如何改变某些字条符的颜色呀 [复制链接]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
21 [报告]
发表于 2008-12-31 17:59 |只看该作者

回复 #20 ynchnluiti 的帖子

<form method=post action="cgi-pl">
  <select name="_date" id="_date" onChange="dosubmit(this);">
     <tmpl_var name=datelist>
  </select>
</form

我的cgi环境没搭好,没法测试。所以给据选择的时间显示列表的代码没写。

论坛徽章:
0
22 [报告]
发表于 2008-12-31 18:22 |只看该作者
原帖由 ynchnluiti 于 2008-12-31 17:59 发表

我的cgi环境没搭好,没法测试。所以给据选择的时间显示列表的代码没写。


非常感谢,呵呵, 这段放在哪里?

论坛徽章:
0
23 [报告]
发表于 2008-12-31 18:29 |只看该作者
帮忙帮到底嘛

#!/usr/bin/perl

use strict;
use warnings;

use CGI;
use HTML::Template;

use IO::File;

my $data_file = 'Your_file';  # Change it
my $file = IO::File->new($data_file);

my $tmpl_file = 'log.tmpl';  # Change it
my $template = HTML::Template->new(filename => $tmpl_file);

my $q = CGI->new;

my @data = $file->getlines;

my %dates = ();
for (@data) {
        $dates{(split /:/, (split)[0])[0]} = 1;
}

my @dates = sort keys %dates;
my $selected = $q->param('rundate') || shift @dates;
@dates = map { {date => $_} } @dates;

my @log;
for (@data) {
        my %t;
        @t{qw/date computer platform command result/} = (split);        
        push @log, \%t if $t{date} =~ /$selected/;
}

$template->param(selected        => $selected,
                                 log                => \@log,
                                 dates                => \@dates);

print $q->header, $template->output;


————————————————————————
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
  <meta http-equiv="Content-Type" content="text/html; charset=gbk">
  <TITLE> Log </TITLE>
  <script>
      function dosubmit( dateobj ) {
          dateobj.form.submit();
      }
  </script>
</HEAD>

<BODY>

<form>
<select name="rundate" onChange="dosubmit(this);">
<option value=<tmpl_var name="selected"> selected><tmpl_var name="selected"></option>
<tmpl_loop name="dates">
<option value=<tmpl_var name="date"> ><tmpl_var name="date"></option>
</tmpl_loop>

</select>
</form>

  <table border="1">
  <tr><th>日期</th><th>计算机名</th><th>系统平台</th><th>运行命令</th><th>运行结果</th><tr>
  <tmpl_loop name="log">
        <tr>
                <td><tmpl_var name=date></td><td><tmpl_var name=computer></td><td><tmpl_var name=platform></td><td><tmpl_var name=command></td><td><tmpl_var name=result></td>
        </tr>
  </tmpl_loop>
  </table>
</BODY>
</HTML>

论坛徽章:
0
24 [报告]
发表于 2008-12-31 18:30 |只看该作者
默认用 第1天 的数据,当然,可以改,比如用 当天 的数据

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
25 [报告]
发表于 2008-12-31 18:38 |只看该作者
原帖由 huanghaojie 于 2008-12-31 18:22 发表


非常感谢,呵呵, 这段放在哪里?

我只是把你你代码修改了一点。这段已经在模板里了。

[ 本帖最后由 ynchnluiti 于 2008-12-31 18:43 编辑 ]

论坛徽章:
0
26 [报告]
发表于 2008-12-31 21:02 |只看该作者
原帖由 cobrawgl 于 2008-12-31 18:29 发表
帮忙帮到底嘛

#!/usr/bin/perl

use strict;
use warnings;

use CGI;
use HTML::Template;

use IO::File;

my $data_file = 'Your_file';  # Change it
my $file = IO::File->new($data_file) ...


哪错了,怎么web里什么也出不来,没改之前还能出来,
我把该改的两个地方的路径都改了呀,没问题,怎么就出来 呢

[ 本帖最后由 huanghaojie 于 2008-12-31 21:03 编辑 ]

论坛徽章:
0
27 [报告]
发表于 2009-01-01 01:52 |只看该作者
感谢cobrawgl  和 ynchnluiti  两位达人,呵呵, 我的搞定了, 晚上注意力不集中,老搞错,祝你俩2009快乐。!!!!
下面的小问题再慢慢搞定。

论坛徽章:
0
28 [报告]
发表于 2009-01-04 15:06 |只看该作者
新年新问题!

my @data = $file->getlines;

my %dates = ();
for (@data) {
        $dates{(split /:/, (split)[0])[0]} = 1;
}

my @dates = sort keys %dates;
my $selected = $q->param('rundate') || shift @dates;
@dates = map { {date => $_} } @dates;

这些东东好难懂
$dates{(split /:/, (split)[0])[0]} = 1;  是意思呀,  我在试着把默认的页面改成最后一次运行的日期。而不是第一次运行的日期。

[ 本帖最后由 huanghaojie 于 2009-1-4 15:07 编辑 ]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
29 [报告]
发表于 2009-01-04 17:38 |只看该作者
原帖由 huanghaojie 于 2009-1-4 15:06 发表
$dates{(split /:/, (split)[0])[0]} = 1;  是意思呀

看看split函数

(split)[0] 把$_按空白分隔组成一个列表,取第一个。
(split /:/, (split)[0])[0] $_按空白分割的第一个字段再按:分割的第一个字段
$dates{(split /:/, (split)[0])[0]} = 1; #给以(split /:/, (split)[0])[0]为键值的散列%dates的元素赋值

论坛徽章:
0
30 [报告]
发表于 2009-01-04 19:08 |只看该作者
原帖由 huanghaojie 于 2009-1-4 15:06 发表
新年新问题!

my @data = $file->getlines;

my %dates = ();
for (@data) {
        $dates{(split /:/, (split)[0])[0]} = 1;
}

my @dates = sort keys %dates;
my $selected = $q->param('runda ...




my $selected = $q->param('rundate') || shift @dates;

改为

my $selected = $q->param('rundate') || pop @dates;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP