1package NDBM_File; 2 3use strict; 4use warnings; 5 6require Tie::Hash; 7require XSLoader; 8 9our @ISA = qw(Tie::Hash); 10our $VERSION = "1.12"; 11 12XSLoader::load(); 13 141; 15 16__END__ 17 18=head1 NAME 19 20NDBM_File - Tied access to ndbm files 21 22=head1 SYNOPSIS 23 24 use Fcntl; # For O_RDWR, O_CREAT, etc. 25 use NDBM_File; 26 27 tie(%h, 'NDBM_File', 'filename', O_RDWR|O_CREAT, 0666) 28 or die "Couldn't tie NDBM file 'filename': $!; aborting"; 29 30 # Now read and change the hash 31 $h{newkey} = newvalue; 32 print $h{oldkey}; 33 ... 34 35 untie %h; 36 37=head1 DESCRIPTION 38 39C<NDBM_File> establishes a connection between a Perl hash variable and 40a file in NDBM_File format;. You can manipulate the data in the file 41just as if it were in a Perl hash, but when your program exits, the 42data will remain in the file, to be used the next time your program 43runs. 44 45Use C<NDBM_File> with the Perl built-in C<tie> function to establish 46the connection between the variable and the file. The arguments to 47C<tie> should be: 48 49=over 4 50 51=item 1. 52 53The hash variable you want to tie. 54 55=item 2. 56 57The string C<"NDBM_File">. (Ths tells Perl to use the C<NDBM_File> 58package to perform the functions of the hash.) 59 60=item 3. 61 62The name of the file you want to tie to the hash. 63 64=item 4. 65 66Flags. Use one of: 67 68=over 2 69 70=item C<O_RDONLY> 71 72Read-only access to the data in the file. 73 74=item C<O_WRONLY> 75 76Write-only access to the data in the file. 77 78=item C<O_RDWR> 79 80Both read and write access. 81 82=back 83 84If you want to create the file if it does not exist, add C<O_CREAT> to 85any of these, as in the example. If you omit C<O_CREAT> and the file 86does not already exist, the C<tie> call will fail. 87 88=item 5. 89 90The default permissions to use if a new file is created. The actual 91permissions will be modified by the user's umask, so you should 92probably use 0666 here. (See L<perlfunc/umask>.) 93 94=back 95 96=head1 DIAGNOSTICS 97 98On failure, the C<tie> call returns an undefined value and probably 99sets C<$!> to contain the reason the file could not be tied. 100 101=head2 C<ndbm store returned -1, errno 22, key "..." at ...> 102 103This warning is emitted when you try to store a key or a value that 104is too long. It means that the change was not recorded in the 105database. See BUGS AND WARNINGS below. 106 107=head1 BUGS AND WARNINGS 108 109There are a number of limits on the size of the data that you can 110store in the NDBM file. The most important is that the length of a 111key, plus the length of its associated value, may not exceed 1008 112bytes. 113 114See L<perlfunc/tie>, L<perldbmfilter>, L<Fcntl> 115 116=cut 117