关于PERL的数据库
DBM简介:
DBM是一种文件数据储存数据,由于采用哈希结构进行连接,因此具有一些数据库的特点功
能与普通文本数据库相比,具有稳定,检索速度快和支持量大的优点,由于DBM是从Unix系统
中移植来的,因此在Unix/linux系统中优点比较明显,而在NT系统中则不太理想,在NT中使用
有时会另数据文件变得十分庞大。
DBM的使用:
数据库采用关联数组方式保存数据,并与关联数组结合使用。
打开文件:
dbmopen(%USERFILE,"dbfilename",0666);
此时将把数据值赋给USERFILE关联数组。
dbmclose(%USERFILE);
添加数据:
dbmopen(%USERFILE,0666);
$USERFILE{$no}=value;
dbmclose(%USERFILE);
$no是数组的关联值,必须唯一,否则该关联数据会被更新。
删除数据:
dbmopen(%USERFILE,0666);
delete $USERFILE{$no};
dbmclose(%USERFILE);
$no是要删除的关联值。
更新数据:
dbmopen(%USERFILE,0666);
$USERFILE{$no}=value;
dbmclose(%USERFILE);
历遍数组:
dbmopen(%USERFILE,0644);
%TEMP=%USERFILE;
dbmclose(%USERFILE);
foreach (keys(%TEMP)){
$value=$TEMP{$_};
}
############################################## use Fcntl qw(:flock); package PACK::DB; require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(dbopen dbclose); sub dbopen { my $dbfile = shift; my $lockfile = shift; system("touch $lockfile") unless (-e $lockfile); open my $fh,$lockfile; flock $fh,LOCK_EX; my %dbm; dbmopen(%dbm,$dbfile,0666); return(\%dbm,$fh); } sub dbclose { my $db = shift; my $lock_handle = shift; dbmclose(%$db); flock $lock_handle,LOCK_UN; close $lock_handle; } #################################