SYN SYN
[p5sagit/p5-mst-13.2.git] / ext / NDBM_File / NDBM_File.pm
CommitLineData
a0d0e21e 1package NDBM_File;
2
43c9fafc 3BEGIN {
4 if ($] >= 5.002) {
5 use strict;
6 }
7}
96318ac8 8
9require Tie::Hash;
cb50131a 10use XSLoader ();
a0d0e21e 11
cb50131a 12our @ISA = qw(Tie::Hash);
13our $VERSION = "1.03";
c07a80fd 14
146174a9 15XSLoader::load 'NDBM_File', $VERSION;
a0d0e21e 16
171;
18
19__END__
a5f75d66 20
21=head1 NAME
22
23NDBM_File - Tied access to ndbm files
24
25=head1 SYNOPSIS
26
22d4bb9c 27 use Fcntl; # For O_RDWR, O_CREAT, etc.
28 use NDBM_File;
a5f75d66 29
22d4bb9c 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.
a5f75d66 44
22d4bb9c 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:
a5f75d66 48
22d4bb9c 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 emmitted 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.
a5f75d66 113
22d4bb9c 114See L<perlfunc/tie>, L<perldbmfilter>, L<Fcntl>
a5f75d66 115
116=cut