Go to the first, previous, next, last section, table of contents.

dbmopen

`dbmopen(ASSOC,DBNAME,MODE)'
dbm または ndbm ファイルと連想配列を bind する。 ASSOC は連想配列の名前である(似てはいるけれど、 普通の open と違い、最初の引数はファイルハンドルではない)。 DBNAME はデータベースの名前から `.dir'または `.pag' の拡張子をとったものである。 データベースが存在しなければ、 MODE で指定される protection で作成される。 古い dbm 関数しかサポートしていないシステムの場合は、 プログラム中で dbmopen は一回しか実行することができない。 dbmndbm もないシステムで dbmopen をコールすると 致命的エラーとなる。 dbmopen の前の連想配列の値は失われる。 dbm ファイルの値の一部はメモリにキャッシュされる。 これはデフォルトでは 64 個であるが、 dbmopen に先立って連想配列にダミーの値を代入することで増やすことができる。 必要なら、reset コマンドでキャッシュをフラッシュすることができる。 dbm ファイルに書き込み許可がない場合、 連想配列の値を読むことはできても、代入はできない。 書き込みができるかどうかテストするのなら、ファイルテストを使うか、 eval 中でダミーの配列をセットしてみて、 エラーが起こるかどうかで判断することができる。 大きな dbm ファイルの場合、 keys()values() といった関数は巨大な配列を返すことがある。 each() を用いて 大きな dbm ファイルについて繰り返しを行いたい場合は、次の例を参照。
# ヒストリーファイルのオフセットを出力
dbmopen(HIST,'/usr/lib/news/history',0666);
while (($key,$val) = each %HIST) {
     print $key, ' = ', unpack('L',$val), "\n";
}
dbmclose(HIST);

Go to the first, previous, next, last section, table of contents.