#!/usr/bin/perl
binmode
STDOUT,
':encoding(utf8)'
;
binmode
STDERR,
':encoding(utf8)'
;
my
(
$in
,
$out
) =
@ARGV
;
die
"No input file provided"
unless
defined
$in
&&
length
$in
;
die
"No output file provided"
unless
defined
$out
&&
length
$out
;
open
my
$out_fh
,
'>'
,
$out
or
die
"Failed to create output file $out - $!"
;
binmode
$out_fh
;
my
$alc
= ApacheLog::Compressor->new(
on_write
=>
sub
{
my
(
$self
,
$pkt
) =
@_
;
print
{
$out_fh
}
$pkt
;
},
filter
=>
sub
{
my
(
$self
,
$data
) =
@_
;
return
0
unless
defined
$data
->{url} &&
length
$data
->{url};
return
0
unless
$data
->{timestamp};
return
0
if
$ApacheLog::Compressor::HTTP_METHOD_LIST
[
$data
->{method}] eq
'OPTIONS'
&&
$data
->{url} eq
'*'
;
return
1;
}
);
open
my
$in_fh
,
'<'
,
$in
or
die
"Failed to open input file $in - $!"
;
binmode
$in_fh
,
':encoding(utf8)'
;
$alc
->send_packet(
'server'
,
hostname
=> hostname(),
);
while
(
my
$line
= <
$in_fh
>) {
$alc
->compress(
$line
);
}
close
$in_fh
or
die
$!;
close
$out_fh
or
die
$!;
$alc
->stats;