--- lib/PXElator/CouchDB.pm 2009/08/17 00:52:51 240 +++ lib/PXElator/CouchDB.pm 2009/08/18 21:30:55 256 @@ -121,17 +121,26 @@ $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 = $data->{time} = time(); - my $time = time(); - $sub =~ s{^.+::}{}; # stip package name + my @caller_name = ( qw/package file line sub/ ); + my @caller = caller(0); + $caller[3] =~ s{^.+::}{}; # stip package name from sub + $data->{ $caller_name[$_] } = $caller[$_] foreach ( 0 .. $#caller_name ); + + my $caller; + my $depth = 0; + while ( my @c = caller($depth) ) { + push @$caller, [ @c ]; + $depth++; + } - $data->{$_} = eval '$' . $_ foreach ( qw/time package line sub/ ); + $data->{caller} = $caller; # carp 'audit ', dump($data); - $time = int($time); # reduce granularity + $time = int($time); # reduce granularity for url + my $package = $caller[0]; $audit->put( "pxelator/$time.$package.$url", $data ); }