简单的Perl正则表达式解析器

PFr*_*ise 3 regex perl parsing

嘿,我正在研究一个非常基本的解析器.我几乎可以肯定我的正则表达式是正确的,但值似乎并没有存储在我的$1$2.难道我做错了什么?我只是在寻找改变代码的技巧.谢谢你的建议!此外,我是Perl的新手,所以如果我做错了什么,我希望能够站稳脚跟并养成坚固的习惯.

来自文件的示例行:

Sat 02-August-2008 20:47 - 123.112.3.209 - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;
Run Code Online (Sandbox Code Playgroud)

我只是从时代开始.

foreach my $line (@lines)
{   
my $match =~ /\d\d-\w+-\d{4} (\d)(\d):\d\d/;

if( $1 == 0)
{
    $times[$2] = $times[$2] + 1;
}
else
{   
    my $time = $1.$2;
    $times[$time] = $times[$time]+ 1;
}
 }


print "\n";
for(my $i=0;$i<24;$i++)
{
print "$i: $times[$i]\n";
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*sen 7

如果你想匹配,$line不应该读取代码

$line =~ /\d\d-\w+-\d{4} (\d)(\d):\d\d/;
Run Code Online (Sandbox Code Playgroud)

看到这里.

  • 正如预期的那样,我从样本行得到2和0.你确实摆脱了`$ line`前面的'my`吧? (2认同)