Question

I have a few log files like these:

  • /var/log/pureftpd.log
  • /var/log/pureftpd.log-20100328
  • /var/log/pureftpd.log-20100322

Is it possible to load all of them into a single filehandle or will I need to load each of them separately?

Was it helpful?

Solution

You could use pipes to virtually concat these files to a single one.

OTHER TIPS

One ugly hack would be this:

local @ARGV = qw(
    /var/log/pureftpd.log 
    /var/log/pureftpd.log-20100328 
    /var/log/pureftpd.log-20100322
);

while(<>) {
    # do something with $_;
}

It's not terribly hard to do the same thing with a different filehandle for each file:

foreach my $file ( @ARGV )
    {
    open my($fh), '<', $file or do { warn '...'; next };
    while( <$fh> )
         {
         ...
         }
    }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top