📄 databaseaccess.mht
字号:
color=3D#cdcd00>0</FONT> .. $dbobj-><FONT =
color=3D#98fb98>length</FONT> - <FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT> <FONT color=3D#ffa500>for</FONT> <FONT =
color=3D#00ffff>(</FONT>$done_yet =3D $dbobj->get<FONT =
color=3D#00ffff>(</FONT>$k, $v, R_FIRST<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#98fb98>not</FONT> $done_yet<FONT =
color=3D#00ffff>;</FONT>
$done_yet =3D $dbobj->get<FONT color=3D#00ffff>(</FONT>$k, =
$v, R_NEXT<FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>)</FONT>
<FONT color=3D#00ffff>{</FONT>
<FONT color=3D#bebebe># process key or value
</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN778>Storing Complex Data in a DBM =
File</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
<TBODY>
<TR>
<TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>MLDBM</FONT> <FONT color=3D#00cd00>'DB_File'</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>tie</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>%HASH</FONT>, <FONT color=3D#00cd00>'MLDBM'</FONT>, =
<FONT color=3D#00ffff>[</FONT>... other DBM arguments<FONT =
color=3D#00ffff>])</FONT> <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> $!<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
# </FONT><FONT color=3D#cdcd00>%hash</FONT><FONT color=3D#bebebe> is a =
tied hash
</FONT><FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>"Tom =
Christiansen"</FONT><FONT color=3D#00ffff>}</FONT> =3D <FONT =
color=3D#00ffff>[</FONT> <FONT color=3D#00cd00>"book author"</FONT>, =
<FONT color=3D#00cd00>'tchrist</FONT><FONT =
color=3D#cdad00>@perl</FONT><FONT color=3D#00cd00>.com'</FONT> <FONT =
color=3D#00ffff>];</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#cdcd00>$hash</FONT><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>"Tom Boutell"</FONT><FONT color=3D#00ffff>}</FONT> =3D =
<FONT color=3D#00ffff>[</FONT> <FONT color=3D#00cd00>"shareware =
author"</FONT>, <FONT color=3D#00cd00>'boutell</FONT><FONT =
color=3D#cdad00>@boutell</FONT><FONT color=3D#00cd00>.com'</FONT> <FONT =
color=3D#00ffff>];</FONT>
<FONT color=3D#bebebe># names to compare
</FONT>$name1 =3D <FONT color=3D#00cd00>"Tom Christiansen"</FONT><FONT =
color=3D#00ffff>;</FONT>
$name2 =3D <FONT color=3D#00cd00>"Tom Boutell"</FONT><FONT =
color=3D#00ffff>;</FONT>
$tom1 =3D <FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00ffff>{</FONT>$name1<FONT color=3D#00ffff>};</FONT> <FONT =
color=3D#bebebe># snag local pointer
</FONT>$tom2 =3D <FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00ffff>{</FONT>$name2<FONT color=3D#00ffff>};</FONT> <FONT =
color=3D#bebebe># and another</FONT><FONT color=3D#43cd80> =
</FONT><FONT color=3D#bebebe>
</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Two Toming: =
$tom1 $tom2\n"</FONT><FONT color=3D#00ffff>;</FONT>
Tom Toming: ARRAY<FONT color=3D#00ffff>(</FONT>0x73048<FONT =
color=3D#00ffff>)</FONT> ARRAY<FONT color=3D#00ffff>(</FONT>0x73e4c<FONT =
color=3D#00ffff>)</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$tom1-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> <FONT =
color=3D#98fb98>eq</FONT> $tom2-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> &&
$tom1-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>]</FONT> <FONT =
color=3D#98fb98>eq</FONT> $tom2-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>])</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"You're =
having runtime fun with one Tom made two.\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"No two =
Toms are ever alike.\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00ffff>{</FONT>$name1<FONT color=3D#00ffff>}</FONT>-><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#98fb98>eq</FONT> <FONT =
color=3D#cdcd00>$hash</FONT><FONT color=3D#00ffff>{</FONT>$name2<FONT =
color=3D#00ffff>}</FONT>-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> && =
<FONT color=3D#bebebe># INEFFICIENT
</FONT> <FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00ffff>{</FONT>$name1<FONT color=3D#00ffff>}</FONT>-><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#98fb98>eq</FONT> <FONT =
color=3D#cdcd00>$hash</FONT><FONT color=3D#00ffff>{</FONT>$name2<FONT =
color=3D#00ffff>}</FONT>-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>])</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"You're =
having runtime fun with one Tom made two.\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"No two =
Toms are ever alike.\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>"Tom Boutell"</FONT><FONT =
color=3D#00ffff>}</FONT>-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> =3D <FONT =
color=3D#00cd00>"Poet Programmer"</FONT><FONT color=3D#00ffff>;</FONT> =
<FONT color=3D#bebebe># WRONG
#-----------------------------
</FONT>$entry =3D <FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>"Tom Boutell"</FONT><FONT =
color=3D#00ffff>};</FONT> <FONT color=3D#bebebe># =
RIGHT
</FONT>$entry-><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> =3D <FONT =
color=3D#00cd00>"Poet Programmer"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>$hash</FONT><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>"Tom Boutell"</FONT><FONT color=3D#00ffff>}</FONT> =3D =
$entry<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN781>Persistent Data</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
<TBODY>
<TR>
<TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>MLDBM</FONT> <FONT color=3D#00cd00>'DB_File'</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$VARIABLE1</FONT>,<FONT =
color=3D#9ac0cd>$VARIABLE2</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$Persistent_Store</FONT> =3D <FONT =
color=3D#00cd00>'/projects/foo/data'</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>BEGIN</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#cdcd00>%data</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>tie</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>%data</FONT>, <FONT color=3D#00cd00>'MLDBM'</FONT>, =
$Persistent_Store<FONT color=3D#00ffff>)</FONT>
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Can't tie to $Persistent_Store : $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
$VARIABLE1 =3D <FONT color=3D#cdcd00>$data</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>VARIABLE1</FONT><FONT =
color=3D#00ffff>};</FONT>
$VARIABLE2 =3D <FONT color=3D#cdcd00>$data</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>VARIABLE2</FONT><FONT =
color=3D#00ffff>};</FONT>
<FONT color=3D#bebebe># ...
</FONT> <FONT color=3D#ff7f50>untie</FONT> <FONT =
color=3D#cdcd00>%data</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>END</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#cdcd00>%data</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>tie</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>%data</FONT>, <FONT color=3D#00cd00>'MLDBM'</FONT>, =
$Persistent_Store<FONT color=3D#00ffff>)</FONT>
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Can't tie to $Persistent_Store : $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>$data</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>VARIABLE1</FONT><FONT =
color=3D#00ffff>}</FONT> =3D $VARIABLE1<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>$data</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>VARIABLE2</FONT><FONT =
color=3D#00ffff>}</FONT> =3D $VARIABLE2<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># ...
</FONT> <FONT color=3D#ff7f50>untie</FONT> <FONT =
color=3D#cdcd00>%data</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ff7f50>push</FONT><FONT =
color=3D#00ffff>(</FONT>@<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#cdcd00>$db</FONT><FONT color=3D#00ffff>{</FONT>$user<FONT =
color=3D#00ffff>}}</FONT>, $duration<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch14/mldbm_demo">downlo=
ad the following standalone program</A></FONT>
#!/usr/bin/perl -w
# mldbm_demo - show how to use MLDBM with DB_File
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>MLDBM</FONT> =
<FONT color=3D#00cd00>"DB_File"</FONT><FONT color=3D#00ffff>;</FONT>
$db =3D <FONT color=3D#00cd00>"/tmp/mldbm-array"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>tie</FONT> <FONT color=3D#cdcd00>%db</FONT>, <FONT =
color=3D#00cd00>'MLDBM'</FONT>, $db
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Can't open $db : $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT><FONT =
color=3D#00ffff>(</FONT><DATA><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>chomp</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>(</FONT>$user, $duration<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#ff7f50>split</FONT><FONT =
color=3D#00ffff>(</FONT>/\s+/, $_<FONT color=3D#00ffff>);</FONT>
$array_<FONT color=3D#98fb98>ref</FONT> =3D <FONT =
color=3D#ff7f50>exists</FONT> <FONT color=3D#cdcd00>$db</FONT><FONT =
color=3D#00ffff>{</FONT>$user<FONT color=3D#00ffff>}</FONT> ? <FONT =
color=3D#cdcd00>$db</FONT><FONT color=3D#00ffff>{</FONT>$user<FONT =
color=3D#00ffff>}</FONT> : <FONT color=3D#00ffff>[];</FONT>
<FONT color=3D#ff7f50>push</FONT><FONT =
color=3D#00ffff>(</FONT>@$array_<FONT color=3D#98fb98>ref</FONT>, =
$duration<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#cdcd00>$db</FONT><FONT =
color=3D#00ffff>{</FONT>$user<FONT color=3D#00ffff>}</FONT> =3D =
$array_<FONT color=3D#98fb98>ref</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>foreach</FONT> <FONT color=3D#9ac0cd>$user</FONT> =
<FONT color=3D#00ffff>(</FONT><FONT color=3D#ff7f50>sort</FONT> <FONT =
color=3D#ff7f50>keys</FONT> <FONT color=3D#cdcd00>%db</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"$user: =
"</FONT><FONT color=3D#00ffff>;</FONT>
$total =3D <FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$duration</FONT> <FONT color=3D#00ffff>(</FONT>@<FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#cdcd00>$db</FONT><FONT =
color=3D#00ffff>{</FONT>$user<FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>})</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"$duration "</FONT><FONT color=3D#00ffff>;</FONT>
$total +=3D $duration<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"($total)\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
__<FONT color=3D#ffa500>END</FONT>__
<FONT color=3D#bebebe>#gnat 15.3
#tchrist 2.5
#jules 22.1
#tchrist 15.9
#gnat 8.7
#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>MLDBM</FONT> <FONT color=3D#ff7f50>qw</FONT><FONT =
color=3D#00ffff>(</FONT>DB_File Storable<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN784>Executing an SQL Command Using DBI =
and=20
DBD</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -