package CPAN::Debug;
use strict;
use vars qw($VERSION);
$VERSION = sprintf "%.6f", substr(q$Rev: 561 $,4)/1000000 + 5.4;
# module is internal to CPAN.pm
%CPAN::DEBUG = qw[
CPAN 1
Index 2
InfoObj 4
Author 8
Distribution 16
Bundle 32
Module 64
CacheMgr 128
Complete 256
FTP 512
Shell 1024
Eval 2048
HandleConfig 4096
Tarzip 8192
Version 16384
Queue 32768
FirstTime 65536
];
$CPAN::DEBUG ||= 0;
#-> sub CPAN::Debug::debug ;
sub debug {
my($self,$arg) = @_;
my($caller,$func,$line,@rest) = caller(1); # caller(0) eg
# Complete, caller(1)
# eg readline
($caller) = caller(0);
$caller =~ s/.*:://;
$arg = "" unless defined $arg;
pop @rest while @rest > 5;
my $rest = join ",", map { defined $_ ? $_ : "UNDEF" } @rest;
if ($CPAN::DEBUG{$caller} & $CPAN::DEBUG){
if ($arg and ref $arg) {
eval { require Data::Dumper };
if ($@) {
$CPAN::Frontend->myprint($arg->as_string);
} else {
$CPAN::Frontend->myprint(Data::Dumper::Dumper($arg));
}
} else {
$CPAN::Frontend->myprint("Debug($caller:$func,$line,[$rest]): $arg\n");
}
}
}
1;