为什么这个程序在我的文本文件中找不到“错误”这个词?

时间:2010-08-02 22:54:17

标签: perl perl-io

open(LOG,"logfile.txt") or die "Unable to open $logfile:$!";
print "\n";
while(<$LOG>){
  print if /\berror\b/i;
}
close(LOG);

4 个答案:

答案 0 :(得分:10)

您的拼写错误实际上会让您更接近以正确的方式打开文件 - 即使用推荐的3参数形式的open

use strict;
use warnings;

open(my $log, '<', "logfile.txt") or die "Open failed : $logfile : $!";
while (<$log>) {
    ...
}

这种方法更好,因为您的文件句柄可以存储在词法范围的变量中(而不是像LOG这样的全局名称)。当词法变量超出范围时,这为自动关闭文件提供了额外的好处。此外,词法文件句柄可以使用更熟悉的语法在子例程之间传递。

答案 1 :(得分:2)

如果你想要更轻松open,你可以这样做:

@ARGV = 'logfile.txt';
while ( <> ) { 
    print if /\berror\b/i;
}

答案 2 :(得分:1)

open LOG, "logfile.txt"; while (<LOG>) { print if /\berror\b/i; }

答案 3 :(得分:1)

您有错误:

while (<$LOG>)

应该阅读

while (<LOG>)

文件句柄不是变量,所以没有$。