8 |
use LWP::UserAgent; |
use LWP::UserAgent; |
9 |
use JSON; |
use JSON; |
10 |
use Data::Dump qw/dump/; |
use Data::Dump qw/dump/; |
|
use Time::HiRes qw/time/; |
|
11 |
use Data::Structure::Util qw(unbless); |
use Data::Structure::Util qw(unbless); |
12 |
use Scalar::Util qw/blessed/; |
use Scalar::Util qw/blessed/; |
13 |
use Storable qw/dclone/; |
use Storable qw/dclone/; |
113 |
|
|
114 |
our $audit = __PACKAGE__->new; |
our $audit = __PACKAGE__->new; |
115 |
|
|
116 |
sub audit { |
sub _store_audit { |
117 |
my $data = pop @_; |
my ( $id, $data ) = @_; |
118 |
|
$audit->put( "pxelator/$id", $data ); |
|
my $url = join(' ', @_); |
|
|
$url =~ s/\s+-\S+//g; # remove command line options |
|
|
$url =~ s/\W+/-/g; |
|
|
|
|
|
my ( $package, $file, $line, $sub ) = caller(1); |
|
|
( $package, undef, $line ) = caller(0) if ! $package || $package eq 'main'; |
|
|
|
|
|
my $time = time(); |
|
|
$sub =~ s{^.+::}{}; # stip package name |
|
|
|
|
|
$data->{$_} = eval '$' . $_ foreach ( qw/time package line sub/ ); |
|
|
|
|
|
# carp 'audit ', dump($data); |
|
|
|
|
|
$time = int($time); # reduce granularity |
|
|
$audit->put( "pxelator/$time.$package.$url", $data ); |
|
|
|
|
119 |
} |
} |
120 |
|
|
121 |
1; |
1; |