关于PERL的数据库
DBM简介:
DBM是一种文件数据储存数据,由于采用哈希结构进行连接,因此具有一些数据库的特点功
能与普通文本数据库相比,具有稳定,检索速度快和支持量大的优点,由于DBM是从Unix系统
中移植来的,因此在Unix/linux系统中优点比较明显,而在NT系统中则不太理想,在NT中使用
有时会另数据文件变得十分庞大。
DBM的使用:
数据库采用关联数组方式保存数据,并与关联数组结合使用。
打开文件:
dbmopen(%USERFILE,"dbfilename",0666);
此时将把数据值赋给USERFILE关联数组。
关闭文件:
dbmclose(%USERFILE);
添加数据:
dbmopen(%USERFILE,"dbfilename",0666);
$USERFILE{$no}=value;
dbmclose(%USERFILE);
$no是数组的关联值,必须唯一,否则该关联数据会被更新。
删除数据:
dbmopen(%USERFILE,"dbfilename",0666);
delete $USERFILE{$no};
dbmclose(%USERFILE);
$no是要删除的关联值。
更新数据:
dbmopen(%USERFILE,"dbfilename",0666);
$USERFILE{$no}=value;
dbmclose(%USERFILE);
历遍数组:
dbmopen(%USERFILE,"dbfilename",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;
}
#################################