dump full caller trace only with DEBUG enviroment set
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 18 Aug 2009 21:53:19 +0000 (21:53 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 18 Aug 2009 21:53:19 +0000 (21:53 +0000)
fix sub name by extracting it from right caller

lib/PXElator/CouchDB.pm

index 0bd77b7..e897e91 100644 (file)
@@ -125,17 +125,22 @@ sub audit {
 
        my @caller_name = ( qw/package file line sub/ );
        my @caller = caller(0);
+       $caller[3] = (caller(1))[3];
        $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, [ splice(@c,0,4) ];
-               $depth++;
-       }
+       if ( $ENV{DEBUG} ) {
+
+               my $caller;
+               my $depth = 0;
+               while ( my @c = caller($depth) ) {
+                       push @$caller, [ @c ];
+                       $depth++;
+               }
 
-       $data->{caller} = $caller;
+               $data->{caller} = $caller;
+
+       }
 
 #      carp 'audit ', dump($data);