Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / perl5 / ext / GDBM_File / GDBM_File.pm
1 # GDBM_File.pm -- Perl 5 interface to GNU gdbm library.
2
3 =head1 NAME
4
5 GDBM_File - Perl5 access to the gdbm library.
6
7 =head1 SYNOPSIS
8
9     use GDBM_File ;
10     tie %hash, 'GDBM_File', $filename, &GDBM_WRCREAT, 0640;
11     # Use the %hash array.
12     untie %hash ;
13
14 =head1 DESCRIPTION
15
16 B<GDBM_File> is a module which allows Perl programs to make use of the
17 facilities provided by the GNU gdbm library.  If you intend to use this
18 module you should really have a copy of the gdbm manualpage at hand.
19
20 Most of the libgdbm.a functions are available through the GDBM_File
21 interface.
22
23 =head1 AVAILABILITY
24
25 Gdbm is available from any GNU archive.  The master site is
26 C<prep.ai.mit.edu>, but your are strongly urged to use one of the many
27 mirrors.   You can obtain a list of mirror sites by issuing the
28 command C<finger fsf@prep.ai.mit.edu>.
29
30 =head1 BUGS
31
32 The available functions and the gdbm/perl interface need to be documented.
33
34 =head1 SEE ALSO
35
36 L<perl(1)>, L<DB_File(3)>. 
37
38 =cut
39
40 package GDBM_File;
41
42 use strict;
43 use vars qw($VERSION @ISA @EXPORT $AUTOLOAD);
44
45 require Carp;
46 require Tie::Hash;
47 require Exporter;
48 use AutoLoader;
49 require DynaLoader;
50 @ISA = qw(Tie::Hash Exporter DynaLoader);
51 @EXPORT = qw(
52         GDBM_CACHESIZE
53         GDBM_FAST
54         GDBM_INSERT
55         GDBM_NEWDB
56         GDBM_READER
57         GDBM_REPLACE
58         GDBM_WRCREAT
59         GDBM_WRITER
60 );
61
62 $VERSION = "1.00";
63
64 sub AUTOLOAD {
65     my($constname);
66     ($constname = $AUTOLOAD) =~ s/.*:://;
67     my $val = constant($constname, @_ ? $_[0] : 0);
68     if ($! != 0) {
69         if ($! =~ /Invalid/) {
70             $AutoLoader::AUTOLOAD = $AUTOLOAD;
71             goto &AutoLoader::AUTOLOAD;
72         }
73         else {
74             Carp::croak("Your vendor has not defined GDBM_File macro $constname, used");
75         }
76     }
77     eval "sub $AUTOLOAD { $val }";
78     goto &$AUTOLOAD;
79 }
80
81 bootstrap GDBM_File $VERSION;
82
83 # Preloaded methods go here.  Autoload methods go after __END__, and are
84 # processed by the autosplit program.
85
86 1;
87 __END__