This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Setting $_ to multiline glob in @INC filter
[perl5.git] / lib / AnyDBM_File.pm
index e6a1503..4153af2 100644 (file)
@@ -1,21 +1,28 @@
 package AnyDBM_File;
-use vars qw(@ISA);
+use warnings;
+use strict;
 
-@ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
+use 5.006_001;
+our $VERSION = '1.01';
+our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
 
 my $mod;
 for $mod (@ISA) {
-    return 1 if eval "require $mod"
+    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;
+
+__END__
 
 =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
 
@@ -30,18 +37,12 @@ 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:
 
-    use POSIX; use NDBM_File; use DB_File;
+    use Fcntl; use NDBM_File; use DB_File;
     tie %newhash,  'DB_File', $new_filename, O_CREAT|O_RDWR;
     tie %oldhash,  'NDBM_File', $old_filename, 1, 0;
     %newhash = %oldhash;
@@ -90,6 +91,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