This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Further doc tweaks.
[perl5.git] / lib / AnyDBM_File.pm
index c985e7e..ce85049 100644 (file)
@@ -1,18 +1,25 @@
 package AnyDBM_File;
 
-@ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
+use 5.005_64;
+our $VERSION = '1.00';
+our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
 
-eval { require NDBM_File } ||
-eval { require DB_File } ||
-eval { require GDBM_File } ||
-eval { require SDBM_File } ||
-eval { require ODBM_File };
+my $mod;
+for $mod (@ISA) {
+    if (eval "require $mod") {
+       @ISA = ($mod);  # if we leave @ISA alone, warnings abound
+       return 1;
+    }
+}
+
+die "No DBM package was successfully found or installed";
+#return 0;
 
 =head1 NAME
 
 AnyDBM_File - provide framework for multiple DBMs
 
-NDBM_File, ODBM_File, SDBM_File, GDBM_File - various DBM implementations
+NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File - various DBM implementations
 
 =head1 SYNOPSIS
 
@@ -27,14 +34,8 @@ L<DB_File>), GDBM, SDBM (which is always there--it comes with Perl), and
 finally ODBM.   This way old programs that used to use NDBM via dbmopen()
 can still do so, but new ones can reorder @ISA:
 
-    @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File);
-
-Note, however, that an explicit use overrides the specified order:
-
-    use GDBM_File;
-    @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File);
-
-will only find GDBM_File.
+    BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
+    use AnyDBM_File;
 
 Having multiple DBM implementations makes it trivial to copy database formats:
 
@@ -87,6 +88,6 @@ By default, but can be redefined.
 
 =head1 SEE ALSO
 
-dbm(3), ndbm(3), DB_File(3)
+dbm(3), ndbm(3), DB_File(3), L<perldbmfilter>
 
 =cut