动脑的机会来了

偶好好动了下脑筋,写了个

[Copy to clipboard] [ - ]
CODE:
#! /usr/bin/perl -w
#        read.pl
use strict;        use warnings;
my $filename;
if (!($filename=$ARGV[0])) {$filename = "Log.html"}
open(FN,$filename)||die $!;
my ($proj,$conf,$err,$warn);
while(<FN>){
        if (/Project: (\w+), Configuration: (.*?)</){
                $proj="None" if !defined($proj=$1);
                $conf="None" if !defined($conf=$2);
                print "Project = ",$proj,"\nConfiguration = ",$conf,"\n";
        }
        if($proj && $_=~/$proj - (\d+) .*?(\d+)/){
                $err="None" if !defined($err=$1);
                $warn ="None" if !defined($warn=$2);
                print "error = ",$err,"\nwarning = ",$warn,"\n";
        }
}

你试试看,运行的时候,在shell下 ./read.pl Log.html
你的是linux吗?

8好意思,刚才有错,现在更正了,和89楼的一致了

老大,我没必要骗你吧。你这么热心的帮我。事实如此啊~@!#
你把你那行 正则式 发出来看看?
你测过了》??win下的。。
完全读不出来&
哦,你要是整个copy我的代码的话,得注意

我那个测试文件是 .html 的后缀,你的是 .htm
就完全套用你的
   if ($Project and $str =~ m{$Project - (\d+) error\(s\), (\d+) warning\(s\)})
                {
                 $Errors =$1 if defined $1;
                 $Warnings =$2 if defined $2;
                }       

为何0读不出来,难道被当作字符处理啊


注意到了,我都改成是我的信息了


我不知道了


QUOTE:
原帖由 perljoker 于 2007-9-25 16:40 发表
$err=$1 if $1;

你这么写是有问题的, 0 的时候打印不出来
这也太另人遗憾了吧

那能怎么写啊。。
对了$1,$2是对应正则表达式上的代号对不。

你真的用的是 if defined $xxx
而不是 if $xxx ?