📄 databaseaccess.mht
字号:
<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>DBI</FONT><FONT color=3D#00ffff>;</FONT>
$dbh =3D DBI-><FONT color=3D#98fb98>connect</FONT><FONT =
color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'DBI:driver:database'</FONT>, <FONT =
color=3D#00cd00>'username'</FONT>, <FONT color=3D#00cd00>'auth'</FONT>,
<FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#00cd00>RaiseError</FONT> =3D> <FONT =
color=3D#cdcd00>1</FONT>, <FONT color=3D#00cd00>AutoCommit</FONT> =
=3D> <FONT color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>});</FONT>
$dbh-><FONT color=3D#ffa500>do</FONT><FONT =
color=3D#00ffff>(</FONT>$sql<FONT color=3D#00ffff>);</FONT>
$sth =3D $dbh->prepare<FONT color=3D#00ffff>(</FONT>$sql<FONT =
color=3D#00ffff>);</FONT>
$sth->execute<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@row</FONT> =3D $sth->fetchrow_array<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#bebebe># ...
</FONT>
<FONT color=3D#00ffff>}</FONT>
$sth->finish<FONT color=3D#00ffff>();</FONT>
$dbh->disconnect<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#bebebe>#-----------------------------
#disconnect(DBI::db=3DHASH(0x9df84)) invalidates 1 active =
cursor(s)</FONT><FONT color=3D#43cd80> </FONT><FONT color=3D#bebebe>
# at -e line 1.
#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch14/dbusers">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# dbusers - manage MySQL user table
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DBI</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>User::pwent</FONT><FONT color=3D#00ffff>;</FONT>
$dbh =3D DBI-><FONT color=3D#98fb98>connect</FONT><FONT =
color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'DBI:mysql:dbname:mysqlserver.domain.com:3306'</FONT>,
<FONT color=3D#00cd00>'user'</FONT>, <FONT =
color=3D#00cd00>'password'</FONT>,
<FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#00cd00>RaiseError</FONT> =3D> <FONT color=3D#cdcd00>1</FONT> =
<FONT color=3D#00ffff>})</FONT>
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"connecting : $DBI::errstr\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
$dbh-><FONT color=3D#ffa500>do</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"CREATE TABLE users (uid =
INT, login CHAR(8))"</FONT><FONT color=3D#00ffff>);</FONT>
$sql_fmt =3D <FONT color=3D#00cd00>"INSERT INTO users VALUES( =
</FONT><FONT color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00>, =
</FONT><FONT color=3D#cdcd00>%s</FONT><FONT color=3D#00cd00> =
)"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>(</FONT>$user =
=3D <FONT color=3D#98fb98>getpwent</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#00ffff>{</FONT>
$sql =3D <FONT color=3D#98fb98>sprintf</FONT><FONT =
color=3D#00ffff>(</FONT>$sql_fmt, $user->uid, $dbh->quote<FONT =
color=3D#00ffff>(</FONT>$user->name<FONT color=3D#00ffff>));</FONT>
$dbh-><FONT color=3D#ffa500>do</FONT><FONT =
color=3D#00ffff>(</FONT>$sql<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>
$sth =3D $dbh->prepare<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"SELECT * FROM users WHERE uid < 50"</FONT><FONT =
color=3D#00ffff>);</FONT>
$sth->execute<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>((</FONT><FONT =
color=3D#cdad00>@row</FONT><FONT color=3D#00ffff>)</FONT> =3D =
$sth->fetchrow<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#98fb98>join</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>", "</FONT>, <FONT color=3D#ff7f50>map</FONT> <FONT =
color=3D#00ffff>{</FONT><FONT color=3D#ff7f50>defined</FONT> $_ ? $_ : =
<FONT color=3D#00cd00>"(null)"</FONT><FONT color=3D#00ffff>}</FONT> =
<FONT color=3D#cdad00>@row</FONT><FONT color=3D#00ffff>)</FONT>, <FONT =
color=3D#00cd00>"\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
$sth->finish<FONT color=3D#00ffff>;</FONT>
$dbh-><FONT color=3D#ffa500>do</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"DROP TABLE =
users"</FONT><FONT color=3D#00ffff>);</FONT>
$dbh->disconnect<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=3DAEN787>Program: ggh - Grep Netscape Global=20
History</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>#-----------------------------
#% ggh http://www.perl.com/index.html
#-----------------------------
#% ggh perl
#-----------------------------
#% ggh mailto:
#-----------------------------
#% ggh -regexp '(?i)\bfaq\b'
#-----------------------------
#% ggh -epoch http://www.perl.com/perl/
#-----------------------------
#% ggh -gmtime http://www.perl.com/perl/
#-----------------------------
#% ggh | less
#-----------------------------
#% ggh -epoch | sort -rn | less
#-----------------------------
#% ggh -epoch | sort -rn | perl -pe 's/\d+/localtime $&/e' | less
#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch14/ggh">download the =
following standalone program</A></FONT>
#!/usr/bin/perl -w
# ggh - grovel global history in netscape logs
</FONT>$USAGE =3D <<EO_COMPLAINT<FONT color=3D#00ffff>;</FONT>
usage: $<FONT color=3D#cdcd00>0</FONT> <FONT =
color=3D#00ffff>[</FONT>-database dbfilename<FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>[</FONT>-help<FONT =
color=3D#00ffff>]</FONT>
<FONT color=3D#00ffff>[</FONT>-epochtime | -<FONT =
color=3D#98fb98>localtime</FONT> | -<FONT =
color=3D#98fb98>gmtime</FONT><FONT color=3D#00ffff>]</FONT>
<FONT color=3D#00ffff>[</FONT> <FONT =
color=3D#00ffff>[</FONT>-regexp<FONT color=3D#00ffff>]</FONT> =
pattern<FONT color=3D#00ffff>]</FONT> | href ... <FONT =
color=3D#00ffff>]</FONT>
EO_COMPLAINT
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Getopt::Long</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>(</FONT>$opt_database, $opt_epochtime, $opt_<FONT =
color=3D#98fb98>localtime</FONT>,
$opt_<FONT color=3D#98fb98>gmtime</FONT>, $opt_regexp, $opt_help,
$pattern, <FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#98fb98>x</FONT> <FONT color=3D#cdcd00>7</FONT><FONT =
color=3D#00ffff>;</FONT>
usage<FONT color=3D#00ffff>()</FONT> <FONT color=3D#ffa500>unless</FONT> =
GetOptions <FONT color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>{</FONT> =
database=3D<FONT color=3D#ff7f50>s</FONT>
regexp=3D<FONT color=3D#ff7f50>s</FONT>
epochtime <FONT =
color=3D#98fb98>localtime</FONT> <FONT color=3D#98fb98>gmtime</FONT>
help
<FONT color=3D#00ffff>};</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$opt_help<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#ff7f50>print</FONT> $USAGE<FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#ffa500>exit</FONT><FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#00ffff>}</FONT>
usage<FONT color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"only one of =
localtime, gmtime, and epochtime allowed"</FONT><FONT =
color=3D#00ffff>)</FONT>
<FONT color=3D#ffa500>if</FONT> $opt_<FONT =
color=3D#98fb98>localtime</FONT> + $opt_<FONT =
color=3D#98fb98>gmtime</FONT> + $opt_epochtime > <FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT> =
$opt_regexp <FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
$pattern =3D $opt_regexp<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>elsif</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@ARGV</FONT> && =
<FONT color=3D#cdad00>$ARGV</FONT><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> !~ <FONT =
color=3D#ff7f50>m</FONT><FONT color=3D#00ffff>(</FONT>://<FONT =
color=3D#00ffff>))</FONT> <FONT color=3D#00ffff>{</FONT>
$pattern =3D <FONT color=3D#ff7f50>shift</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
usage<FONT color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"can't mix URLs =
and explicit patterns"</FONT><FONT color=3D#00ffff>)</FONT>
<FONT color=3D#ffa500>if</FONT> $pattern && <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$pattern =
&& !<FONT color=3D#ffa500>eval</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#00cd00>''</FONT> =3D~ =
/$pattern/<FONT color=3D#00ffff>;</FONT> <FONT color=3D#cdcd00>1</FONT> =
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
$@ =3D~ <FONT color=3D#ff7f50>s</FONT>/ at \w+ line \d+\.//<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"$0: bad =
pattern $@"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>require</FONT> <FONT =
color=3D#b2dfee>DB_File</FONT><FONT color=3D#00ffff>;</FONT> =
DB_File->import<FONT color=3D#00ffff>();</FONT> <FONT =
color=3D#bebebe># delay loading until runtime
</FONT>$| =3D <FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>;</FONT> <FONT =
color=3D#bebebe># feed the hungry PAGERs
</FONT>
$dotdir =3D <FONT color=3D#cdcd00>$ENV</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>HOME</FONT><FONT =
color=3D#00ffff>}</FONT> || <FONT color=3D#cdcd00>$ENV</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>LOGNAME</FONT><FONT =
color=3D#00ffff>};</FONT>
$HISTORY =3D $opt_database || <FONT =
color=3D#00cd00>"$dotdir/.netscape/history.db"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"no netscape =
history dbase in $HISTORY: $!"</FONT> <FONT =
color=3D#ffa500>unless</FONT> <FONT color=3D#b2dfee>-e</FONT> =
$HISTORY<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"can't dbmopen =
$HISTORY: $!"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#98fb98>dbmopen</FONT> <FONT color=3D#cdcd00>%hist_db</FONT>, =
$HISTORY, <FONT color=3D#cdcd00>0666</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># the next line is a hack because the C =
programmers who did this
# didn't understand strlen vs strlen+1. jwz told me so. :-)
</FONT>$add_nulls =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>ord</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>substr</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>each</FONT> <FONT color=3D#cdcd00>%hist_db</FONT>, <FONT =
color=3D#cdcd00>-1</FONT><FONT color=3D#00ffff>))</FONT> =3D=3D <FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe># XXX: should now do scalar keys to reset but =
don't</FONT><FONT color=3D#43cd80> </FONT><FONT color=3D#bebebe>
# want cost of full traverse, required on tied hashes.
# better to close and reopen?
</FONT>
$nulled_href =3D <FONT color=3D#00cd00>""</FONT><FONT =
color=3D#00ffff>;</FONT><FONT color=3D#43cd80> </FONT>
$byte_order =3D <FONT color=3D#00cd00>"V"</FONT><FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># PC people don't =
grok "N" (network order)
</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -