动脑的机会来了



QUOTE:
原帖由 life382 于 2007-9-25 16:10 发表
问题1:好像没读到errors的值
问题2:字符串中的kavset 要用刚才取到的$project变量来用,行不 

if ($project and $line =~ m{$project - (\d+) error\(s\), (\d+) warning\(s\)})


error 的值读到了啊,你没看我的测试程序吗?
老大,偶知道错了,中秋快乐哈

正题,回复那MM
正则表达式中是可以使用变量的,如$good="ok";$_=~/$good/;
奇怪,我这边没读到。。

文件中的信息
</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5> </td><td width=0 bgcolor=#FFFFFF> </td><td width=*><pre>Build log was saved at "file://e:\Build\Build_Src\KIS\kis\kav32\kav32.set\Release\BuildLog.htm"
kavset - 0 error(s), 1 warning(s)
</pre></table><table   width=100% height=20 bgcolor=#CFCFE5><tr><td><font face=arial size=+2>
</font></table></body></html>
我测试过了,没有问题的,不知道你是怎么回事。
汗~!
就跟你上面教的一样啊。好奇怪……
你测试能通过,又更奇怪了
不是要叫我留下遗憾吧


QUOTE:
原帖由 life382 于 2007-9-25 16:32 发表
汗~!
就跟你上面教的一样啊。好奇怪……
你测试能通过,又更奇怪了
不是要叫我留下遗憾吧

你把所有的html代码都发出来吧.....我发现你前面的代码和这次发的信息又不一样了


[Copy to clipboard] [ - ]
CODE:
use strict;

my $project;
my $configuration;
my $error;
my $warning;
my $logfile = "Log.html";

open LOGFILE, "<$logfile" or die "$!\n";

while (my $line = <LOGFILE>) {
        chomp $line; # and print $line;
       
        if ($line =~ m{Project: (\w+), Configuration: (\w+\|\w+)}) {
                $project = $1 if defined $1;
                $configuration = $2 if defined $2;
                print "Project = $project\n";
                print "Configuration = $configuration\n";
                next;
        }
        if ($project and $line =~ m{$project - (\d+) error\(s\), (\d+) warning\(s\)}) {
                $error = $1 if defined $1;
                $warning = $2 if defined $2;
                print "Error = $error\n";
                print "Warnings = $warning\n";
        }
}

---------------------------

<html>
<head>
        <META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-16">
</head>
<body>
<h3>Rebuild started: Project: kavset, Configuration: Release|Win32</h3>
</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5> </td><td width=0 bgcolor=#FFFFFF> </td><td width=*><pre>Build log was saved at "file://e:\Build\Build_Src\KIS\kis\kav32\kav32.set\Release\BuildLog.htm"
kavset - 10 error(s), 11 warning(s)
</pre></table><table   width=100% height=20 bgcolor=#CFCFE5><tr><td><font face=arial size=+2>
</font></table>
</body>
</html>

----------------------------------------

>perl -w test.pl
Project = kavset
Configuration = Release|Win32
Error = 10
Warnings = 11
>Exit code: 0

你看,没问题啊



[Copy to clipboard] [ - ]
CODE:
</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5> </td><td width=0 bgcolor=#FFFFFF> </td><td width=*><pre>Build log was saved at "file://e:\Build\Build_Src\KIS\kis\kav32\kav32.set\Release\BuildLog.htm"
kavset - 0 error(s), 1 warning(s)
</pre></table><table   width=100% height=20 bgcolor=#CFCFE5><tr><td><font face=arial size=+2>
</font></table></body></html>



[Copy to clipboard] [ - ]
CODE:
<html>
<head>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-16">
</head>
<body>
<pre>
<table width=100% bgcolor=#CFCFE5><tr> <td> <font face=arial size=+3>
Build Log
</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0

这代码你总是一段一段的,所以你们测试的代码不一致,结果也不一致
我把它改成1以上的就可以读出来了。
0就是读不出来,什么问题。。
怎么会啊,我那个测试程序 0 也能读出来啊

rpwt?