【发布时间】:2010-03-29 09:37:11
【问题描述】:
我有一些这样的日志文件:
- /var/log/pureftpd.log
- /var/log/pureftpd.log-20100328
- /var/log/pureftpd.log-20100322
是否可以将它们全部加载到单个文件句柄中,还是需要分别加载它们?
【问题讨论】:
标签: perl filehandle
我有一些这样的日志文件:
是否可以将它们全部加载到单个文件句柄中,还是需要分别加载它们?
【问题讨论】:
标签: perl filehandle
一个丑陋的黑客是这样的:
local @ARGV = qw(
/var/log/pureftpd.log
/var/log/pureftpd.log-20100328
/var/log/pureftpd.log-20100322
);
while(<>) {
# do something with $_;
}
【讨论】:
ARGV 文件句柄隐式打开@ARGV 中的每个文件。
@ARGV 来破坏此代码。对于一个快速的一次性脚本,很好。
您可以使用管道将这些文件虚拟地连接到一个文件中。
【讨论】:
为每个文件使用不同的文件句柄来做同样的事情并不难:
foreach my $file ( @ARGV )
{
open my($fh), '<', $file or do { warn '...'; next };
while( <$fh> )
{
...
}
}
【讨论】: