open(LOG,"logfile.txt") or die "Unable to open $logfile:$!";
print "\n";
while(<$LOG>){
print if /\berror\b/i;
}
close(LOG);
问问题
136 次
4 回答
10
您的错字实际上使您更接近以正确的方式打开文件 - 即使用推荐的 3 参数形式open。
use strict;
use warnings;
open(my $log, '<', "logfile.txt") or die "Open failed : $logfile : $!";
while (<$log>) {
...
}
这种方法更好,因为您的文件句柄可以存储在词法范围的变量中(而不是全局名称,如LOG
)。这为在词法变量超出范围时自动关闭文件提供了额外的好处。此外,词法文件句柄可以使用更熟悉的语法在子例程之间传递。
于 2010-08-02T23:23:20.800 回答
2
如果你想要一个更轻松的open
,你可以这样做:
@ARGV = 'logfile.txt';
while ( <> ) {
print if /\berror\b/i;
}
于 2010-08-03T01:10:00.107 回答
1
open LOG, "logfile.txt";
while (<LOG>) {
print if /\berror\b/i;
}
于 2010-08-02T22:57:57.520 回答
1
你有一个错误:
while (<$LOG>)
应该读
while (<LOG>)
文件句柄不是变量,所以没有 $。
于 2010-08-02T23:00:00.633 回答