2011-04-11 41 views
0

我有这样的代码跳过与#处理文件。怎么了?

while (defined (my $line = <FILE>)) { 

    if ($line =~ /^#/) { next; } 

    $line =~ /^(\w+);(\w+);.*$/; 
    $user_map{$2} = $1; 
} 

开始行,我会觉得这个代码做了同样的

while (defined (my $line = <FILE>)) { 

    unless ($line =~ /^#/) { 
    $line =~ /^(\w+);(\w+);.*$/; 
    $user_map{$2} = $1; 
    } 

} 

但事实并非如此。

最后一个代码有什么问题?

更新:用实际代码替代# do stuff

+6

详细评论会发生什么以及两个版本之间的差异。至于* I *可以看到代码应该实际执行相同的操作。 – 2011-04-11 12:57:48

+3

我没有看到任何会导致差异的东西。你如何看待他们的行为不同?你能提供一个你得到不同结果的输入例子吗? – 2011-04-11 13:41:17

+2

你的模式的“。* $”部分没有做任何有用的事情,所以它不应该在那里:-) – tadmc 2011-04-11 16:13:09

回答

0

这两个代码块应该行为相同。检查是否有任何错别字。

+0

你是对的。他们实际上也是这样做的。我不知道他们之前为什么不这样做。 – 2011-04-11 15:00:19