Initial Commit
This commit is contained in:
177
database/perl/lib/Pod/Simple/Debug.pm
Normal file
177
database/perl/lib/Pod/Simple/Debug.pm
Normal file
@@ -0,0 +1,177 @@
|
||||
require 5;
|
||||
package Pod::Simple::Debug;
|
||||
use strict;
|
||||
use vars qw($VERSION );
|
||||
$VERSION = '3.42';
|
||||
|
||||
sub import {
|
||||
my($value,$variable);
|
||||
|
||||
if(@_ == 2) {
|
||||
$value = $_[1];
|
||||
} elsif(@_ == 3) {
|
||||
($variable, $value) = @_[1,2];
|
||||
|
||||
($variable, $value) = ($value, $variable)
|
||||
if defined $value and ref($value) eq 'SCALAR'
|
||||
and not(defined $variable and ref($variable) eq 'SCALAR')
|
||||
; # tolerate getting it backwards
|
||||
|
||||
unless( defined $variable and ref($variable) eq 'SCALAR') {
|
||||
require Carp;
|
||||
Carp::croak("Usage:\n use Pod::Simple::Debug (NUMVAL)\nor"
|
||||
. "\n use Pod::Simple::Debug (\\\$var, STARTNUMVAL)\nAborting");
|
||||
}
|
||||
} else {
|
||||
require Carp;
|
||||
Carp::croak("Usage:\n use Pod::Simple::Debug (NUMVAL)\nor"
|
||||
. "\n use Pod::Simple::Debug (\\\$var, STARTNUMVAL)\nAborting");
|
||||
}
|
||||
|
||||
if( defined &Pod::Simple::DEBUG ) {
|
||||
require Carp;
|
||||
Carp::croak("It's too late to call Pod::Simple::Debug -- "
|
||||
. "Pod::Simple has already loaded\nAborting");
|
||||
}
|
||||
|
||||
$value = 0 unless defined $value;
|
||||
|
||||
unless($value =~ m/^-?\d+$/) {
|
||||
require Carp;
|
||||
Carp::croak( "$value isn't a numeric value."
|
||||
. "\nUsage:\n use Pod::Simple::Debug (NUMVAL)\nor"
|
||||
. "\n use Pod::Simple::Debug (\\\$var, STARTNUMVAL)\nAborting");
|
||||
}
|
||||
|
||||
if( defined $variable ) {
|
||||
# make a not-really-constant
|
||||
*Pod::Simple::DEBUG = sub () { $$variable } ;
|
||||
$$variable = $value;
|
||||
print STDERR "# Starting Pod::Simple::DEBUG = non-constant $variable with val $value\n";
|
||||
} else {
|
||||
*Pod::Simple::DEBUG = eval " sub () { $value } ";
|
||||
print STDERR "# Starting Pod::Simple::DEBUG = $value\n";
|
||||
}
|
||||
|
||||
require Pod::Simple;
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Pod::Simple::Debug -- put Pod::Simple into trace/debug mode
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Pod::Simple::Debug (5); # or some integer
|
||||
|
||||
Or:
|
||||
|
||||
my $debuglevel;
|
||||
use Pod::Simple::Debug (\$debuglevel, 0);
|
||||
...some stuff that uses Pod::Simple to do stuff, but which
|
||||
you don't want debug output from...
|
||||
|
||||
$debug_level = 4;
|
||||
...some stuff that uses Pod::Simple to do stuff, but which
|
||||
you DO want debug output from...
|
||||
|
||||
$debug_level = 0;
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This is an internal module for controlling the debug level (a.k.a. trace
|
||||
level) of Pod::Simple. This is of interest only to Pod::Simple
|
||||
developers.
|
||||
|
||||
|
||||
=head1 CAVEATS
|
||||
|
||||
Note that you should load this module I<before> loading Pod::Simple (or
|
||||
any Pod::Simple-based class). If you try loading Pod::Simple::Debug
|
||||
after &Pod::Simple::DEBUG is already defined, Pod::Simple::Debug will
|
||||
throw a fatal error to the effect that
|
||||
"It's too late to call Pod::Simple::Debug".
|
||||
|
||||
Note that the C<use Pod::Simple::Debug (\$x, I<somenum>)> mode will make
|
||||
Pod::Simple (et al) run rather slower, since &Pod::Simple::DEBUG won't
|
||||
be a constant sub anymore, and so Pod::Simple (et al) won't compile with
|
||||
constant-folding.
|
||||
|
||||
|
||||
=head1 GUTS
|
||||
|
||||
Doing this:
|
||||
|
||||
use Pod::Simple::Debug (5); # or some integer
|
||||
|
||||
is basically equivalent to:
|
||||
|
||||
BEGIN { sub Pod::Simple::DEBUG () {5} } # or some integer
|
||||
use Pod::Simple ();
|
||||
|
||||
And this:
|
||||
|
||||
use Pod::Simple::Debug (\$debug_level,0); # or some integer
|
||||
|
||||
is basically equivalent to this:
|
||||
|
||||
my $debug_level;
|
||||
BEGIN { $debug_level = 0 }
|
||||
BEGIN { sub Pod::Simple::DEBUG () { $debug_level }
|
||||
use Pod::Simple ();
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<Pod::Simple>
|
||||
|
||||
The article "Constants in Perl", in I<The Perl Journal> issue
|
||||
21. See L<http://interglacial.com/tpj/21/>
|
||||
|
||||
=head1 SUPPORT
|
||||
|
||||
Questions or discussion about POD and Pod::Simple should be sent to the
|
||||
pod-people@perl.org mail list. Send an empty email to
|
||||
pod-people-subscribe@perl.org to subscribe.
|
||||
|
||||
This module is managed in an open GitHub repository,
|
||||
L<https://github.com/perl-pod/pod-simple/>. Feel free to fork and contribute, or
|
||||
to clone L<git://github.com/perl-pod/pod-simple.git> and send patches!
|
||||
|
||||
Patches against Pod::Simple are welcome. Please send bug reports to
|
||||
<bug-pod-simple@rt.cpan.org>.
|
||||
|
||||
=head1 COPYRIGHT AND DISCLAIMERS
|
||||
|
||||
Copyright (c) 2002 Sean M. Burke.
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the same terms as Perl itself.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
without any warranty; without even the implied warranty of
|
||||
merchantability or fitness for a particular purpose.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
|
||||
But don't bother him, he's retired.
|
||||
|
||||
Pod::Simple is maintained by:
|
||||
|
||||
=over
|
||||
|
||||
=item * Allison Randal C<allison@perl.org>
|
||||
|
||||
=item * Hans Dieter Pearcey C<hdp@cpan.org>
|
||||
|
||||
=item * David E. Wheeler C<dwheeler@cpan.org>
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user