diff options
Diffstat (limited to 'ext/GDBM_File/GDBM_File.pm')
-rw-r--r-- | ext/GDBM_File/GDBM_File.pm | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/ext/GDBM_File/GDBM_File.pm b/ext/GDBM_File/GDBM_File.pm new file mode 100644 index 0000000000..23422f7a2e --- /dev/null +++ b/ext/GDBM_File/GDBM_File.pm @@ -0,0 +1,47 @@ +package GDBM_File; + +require Carp; +require TieHash; +require Exporter; +require AutoLoader; +require DynaLoader; +@ISA = (TieHash, Exporter, AutoLoader, DynaLoader); +@EXPORT = qw( + GDBM_CACHESIZE + GDBM_FAST + GDBM_INSERT + GDBM_NEWDB + GDBM_READER + GDBM_REPLACE + GDBM_WRCREAT + GDBM_WRITER +); + +sub AUTOLOAD { + if (@_ > 1) { + $AutoLoader::AUTOLOAD = $AUTOLOAD; + goto &AutoLoader::AUTOLOAD; + } + local($constname); + ($constname = $AUTOLOAD) =~ s/.*:://; + $val = constant($constname, @_ ? $_[0] : 0); + if ($! != 0) { + if ($! =~ /Invalid/) { + $AutoLoader::AUTOLOAD = $AUTOLOAD; + goto &AutoLoader::AUTOLOAD; + } + else { + Carp::croak("Your vendor has not defined GDBM_File macro $constname, used"); + } + } + eval "sub $AUTOLOAD { $val }"; + goto &$AUTOLOAD; +} + +bootstrap GDBM_File; + +# Preloaded methods go here. Autoload methods go after __END__, and are +# processed by the autosplit program. + +1; +__END__ |