BerkeleyDB-Easy
view release on metacpan or search on metacpan
lib/BerkeleyDB/Easy/Common.pm view on Meta::CPAN
}
#
# Install a stub closure into the calling package. When called for the
# first time, it will compile and magic goto itself. If we get passed a
# specification, generate a BerkeleyDB.pm wrapper function. Otherwise, make
# a simple object accessor.
#
sub _install {
my ($self, $name, $spec) = @_;
my ($pack, $file, $line) = (caller)[0..2];
DEBUG and $self->_debug(qq(Installing method stub: $name));
my $stub = sub {
my $code = $spec
? $self->_generate($spec, $name, $pack)
: $self->_accessor($name);
TRACE and $self->_trace(qq(Generated code: $code));
$self->_compile($code, $name, $pack);
lib/BerkeleyDB/Easy/Common.pm view on Meta::CPAN
}
#
# Prior to compilation, interleave code with line directives so that
# stack traces will be still be somewhat useful. They'll point to the
# file and line number of our caller, the site of the template definition.
# (Internal method, used by _generate and _accessor)
#
sub _lines {
my $self = shift;
my ($file, $line) = (caller)[1..2];
join qq(# line $line $file(EVAL)\n),
map { (my $ln = $_) =~ s/\s*$/\n/; $ln }
grep $_, @_;
}
#
# Compile some code into the requested package (or caller).
# (Internal method, used by _install)
#
( run in 1.384 second using v1.01-cache-2.11-cpan-1e74a51a04c )