⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;yyh&nbsp;(阿欢&amp;正在努力上进中......),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;MySQL&nbsp;&amp;&nbsp;mSQL&nbsp;Chapter&nbsp;10&nbsp;Perl&nbsp;(3)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Sep&nbsp;18&nbsp;01:44:22&nbsp;1999)&nbsp;<BR>&nbsp;<BR>MysqlPerl&nbsp;<BR>Monty&nbsp;Widenius,&nbsp;the&nbsp;author&nbsp;of&nbsp;MySQL,&nbsp;also&nbsp;wrote&nbsp;the&nbsp;Perl&nbsp;interface&nbsp;to&nbsp;MySQL,&nbsp;Mysql.pm.&nbsp;This&nbsp;was&nbsp;based&nbsp;on&nbsp;the&nbsp;mSQL&nbsp;module,&nbsp;Msql.pm.&nbsp;Thus,&nbsp;the&nbsp;interfaces&nbsp;of&nbsp;the&nbsp;two&nbsp;modules&nbsp;are&nbsp;almost&nbsp;identical.&nbsp;In&nbsp;fact,&nbsp;we&nbsp;recently&nbsp;converted&nbsp;an&nbsp;entire&nbsp;site&nbsp;from&nbsp;mSQL&nbsp;to&nbsp;&nbsp;<BR>MySQL&nbsp;by&nbsp;running&nbsp;&quot;perl&nbsp;-e&nbsp;'s/^Msql/Mysql/&quot;&nbsp;*.cgi&quot;&nbsp;in&nbsp;every&nbsp;directory&nbsp;containing&nbsp;a&nbsp;CGI.&nbsp;This&nbsp;covers&nbsp;95%&nbsp;of&nbsp;the&nbsp;work&nbsp;involved.&nbsp;Of&nbsp;course,&nbsp;this&nbsp;does&nbsp;not&nbsp;give&nbsp;you&nbsp;any&nbsp;of&nbsp;the&nbsp;advantages&nbsp;of&nbsp;MySQL,&nbsp;but&nbsp;it&nbsp;is&nbsp;a&nbsp;quick&nbsp;and&nbsp;easy&nbsp;way&nbsp;to&nbsp;start&nbsp;down&nbsp;the&nbsp;road&nbsp;to&nbsp;&nbsp;<BR>MySQL.&nbsp;Mysql.pm&nbsp;is&nbsp;maintained&nbsp;as&nbsp;part&nbsp;of&nbsp;msql-mysql-modules&nbsp;by&nbsp;Jochen&nbsp;Wiedmann.&nbsp;<BR>&nbsp;<BR>TIP:&nbsp;One&nbsp;of&nbsp;the&nbsp;largest&nbsp;differences&nbsp;between&nbsp;MySQL&nbsp;and&nbsp;mSQL&nbsp;is&nbsp;the&nbsp;way&nbsp;they&nbsp;handle&nbsp;sequences.&nbsp;In&nbsp;mSQL,&nbsp;a&nbsp;sequence&nbsp;is&nbsp;defined&nbsp;on&nbsp;a&nbsp;table&nbsp;with&nbsp;a&nbsp;command&nbsp;like&nbsp;CREATE&nbsp;SEQUENCE&nbsp;on&nbsp;tablename.&nbsp;The&nbsp;sequence&nbsp;value&nbsp;is&nbsp;then&nbsp;read&nbsp;as&nbsp;if&nbsp;it&nbsp;were&nbsp;a&nbsp;normal&nbsp;table&nbsp;value&nbsp;&nbsp;<BR>with&nbsp;the&nbsp;command&nbsp;SELECT&nbsp;_seq&nbsp;from&nbsp;tablename.&nbsp;MySQL&nbsp;adds&nbsp;the&nbsp;flag&nbsp;AUTO_INCREMENT&nbsp;to&nbsp;the&nbsp;primary&nbsp;key.&nbsp;Whenever&nbsp;a&nbsp;null&nbsp;value&nbsp;is&nbsp;inserted&nbsp;into&nbsp;this&nbsp;field,&nbsp;it&nbsp;is&nbsp;automatically&nbsp;incremented.&nbsp;Both&nbsp;MySQL&nbsp;and&nbsp;mSQL&nbsp;allow&nbsp;only&nbsp;one&nbsp;sequence&nbsp;per&nbsp;table.&nbsp;For&nbsp;a&nbsp;full&nbsp;&nbsp;<BR>discussion&nbsp;on&nbsp;sequences&nbsp;in&nbsp;MySQL&nbsp;and&nbsp;mSQL,&nbsp;see&nbsp;Chapter&nbsp;6,&nbsp;SQL&nbsp;According&nbsp;to&nbsp;MySQL&nbsp;and&nbsp;mSQL.&nbsp;<BR>&nbsp;<BR>As&nbsp;an&nbsp;example&nbsp;of&nbsp;some&nbsp;of&nbsp;the&nbsp;features&nbsp;of&nbsp;Mysql.pm,&nbsp;let's&nbsp;go&nbsp;back&nbsp;to&nbsp;the&nbsp;tests&nbsp;example.&nbsp;Now&nbsp;that&nbsp;we&nbsp;have&nbsp;subject.cgi&nbsp;taken&nbsp;care&nbsp;of,&nbsp;the&nbsp;next&nbsp;step&nbsp;is&nbsp;the&nbsp;table&nbsp;of&nbsp;student&nbsp;information.&nbsp;The&nbsp;structure&nbsp;of&nbsp;the&nbsp;students&nbsp;table&nbsp;is&nbsp;as&nbsp;follows:&nbsp;<BR>&nbsp;<BR>CREATE&nbsp;TABLE&nbsp;student&nbsp;(&nbsp;<BR>&nbsp;&nbsp;id&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;auto_increment,&nbsp;<BR>&nbsp;&nbsp;first&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;middle&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;last&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;ext&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;subjects&nbsp;VARCHAR(100),&nbsp;<BR>&nbsp;&nbsp;age&nbsp;INT,&nbsp;<BR>&nbsp;&nbsp;sex&nbsp;INT,&nbsp;<BR>&nbsp;&nbsp;address&nbsp;BLOB,&nbsp;<BR>&nbsp;&nbsp;city&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;state&nbsp;VARCHAR(5),&nbsp;<BR>&nbsp;&nbsp;zip&nbsp;VARCHAR(10),&nbsp;<BR>&nbsp;&nbsp;phone&nbsp;VARCHAR(10),&nbsp;<BR>&nbsp;&nbsp;PRIMARY&nbsp;KEY&nbsp;(id)&nbsp;<BR>)&nbsp;&nbsp;<BR>All&nbsp;of&nbsp;the&nbsp;information&nbsp;used&nbsp;by&nbsp;the&nbsp;subject.cgi&nbsp;program&nbsp;is&nbsp;in&nbsp;this&nbsp;table,&nbsp;as&nbsp;well&nbsp;as&nbsp;other&nbsp;information&nbsp;pertaining&nbsp;to&nbsp;the&nbsp;student.&nbsp;The&nbsp;program&nbsp;that&nbsp;handles&nbsp;this&nbsp;table,&nbsp;student.cgi&nbsp;must&nbsp;perform&nbsp;all&nbsp;of&nbsp;the&nbsp;functions&nbsp;that&nbsp;subject.cgi&nbsp;did&nbsp;for&nbsp;the&nbsp;subject&nbsp;&nbsp;<BR>table.&nbsp;<BR>&nbsp;<BR>TIP:&nbsp;It&nbsp;is&nbsp;not&nbsp;possible&nbsp;to&nbsp;access&nbsp;a&nbsp;mSQL&nbsp;database&nbsp;with&nbsp;the&nbsp;Mysql.pm&nbsp;module,&nbsp;or&nbsp;MySQL&nbsp;with&nbsp;Msql.pm.&nbsp;The&nbsp;student.cgi&nbsp;program&nbsp;expects&nbsp;to&nbsp;find&nbsp;a&nbsp;MySQL&nbsp;version&nbsp;of&nbsp;the&nbsp;subjects&nbsp;table.&nbsp;Likewise,&nbsp;the&nbsp;subject.cgi&nbsp;program&nbsp;expects&nbsp;an&nbsp;mSQL&nbsp;version&nbsp;of&nbsp;the&nbsp;students&nbsp;&nbsp;<BR>table.&nbsp;<BR>&nbsp;<BR>To&nbsp;illustrate&nbsp;the&nbsp;operation&nbsp;of&nbsp;Mysql.pm,&nbsp;we&nbsp;will&nbsp;examine&nbsp;in&nbsp;detail&nbsp;the&nbsp;portion&nbsp;of&nbsp;student.cgi&nbsp;that&nbsp;enables&nbsp;a&nbsp;user&nbsp;to&nbsp;change&nbsp;the&nbsp;information&nbsp;about&nbsp;a&nbsp;student.&nbsp;Just&nbsp;like&nbsp;the&nbsp;&quot;add&quot;&nbsp;action&nbsp;in&nbsp;the&nbsp;Msql.pm&nbsp;example&nbsp;was&nbsp;broken&nbsp;up&nbsp;into&nbsp;four&nbsp;separate&nbsp;functions,&nbsp;&nbsp;<BR>the&nbsp;&quot;change&quot;&nbsp;action&nbsp;here&nbsp;is&nbsp;separated&nbsp;into&nbsp;three&nbsp;individual&nbsp;functions.&nbsp;<BR>&nbsp;<BR>The&nbsp;first&nbsp;function,&nbsp;change,&nbsp;prints&nbsp;out&nbsp;a&nbsp;form&nbsp;that&nbsp;allows&nbsp;the&nbsp;user&nbsp;to&nbsp;search&nbsp;for&nbsp;a&nbsp;student&nbsp;to&nbsp;change,&nbsp;as&nbsp;shown&nbsp;in&nbsp;the&nbsp;following:&nbsp;<BR>&nbsp;<BR>sub&nbsp;change&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;header,&nbsp;start_html('title'=&gt;'Student&nbsp;Change&nbsp;Search',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BGCOLOR'=&gt;'white');&nbsp;<BR>&nbsp;&nbsp;&nbsp;&amp;print_form('search2','Search&nbsp;for&nbsp;a&nbsp;Student&nbsp;to&nbsp;Change',1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=HIDDEN&nbsp;NAME=&quot;subaction&quot;&nbsp;VALUE=&quot;change2&quot;&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=SUBMIT&nbsp;VALUE=&quot;&nbsp;Search&nbsp;for&nbsp;Students&nbsp;&quot;&gt;&nbsp;<BR>&nbsp;&lt;INPUT&nbsp;TYPE=SUBMIT&nbsp;NAME=&quot;all&quot;&nbsp;VALUE=&quot;&nbsp;View&nbsp;all&nbsp;Students&nbsp;&quot;&gt;&nbsp;<BR>&nbsp;&lt;INPUT&nbsp;TYPE=RESET&gt;&nbsp;<BR>&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>}&nbsp;<BR>The&nbsp;form&nbsp;used&nbsp;for&nbsp;searching&nbsp;for&nbsp;a&nbsp;student&nbsp;to&nbsp;&quot;change&quot;&nbsp;is&nbsp;so&nbsp;similar&nbsp;to&nbsp;the&nbsp;form&nbsp;used&nbsp;to&nbsp;searching&nbsp;for&nbsp;a&nbsp;student&nbsp;to&nbsp;&quot;view&quot;&nbsp;and&nbsp;the&nbsp;one&nbsp;to&nbsp;&quot;add&quot;&nbsp;a&nbsp;student&nbsp;that&nbsp;a&nbsp;single&nbsp;function,&nbsp;print_form,&nbsp;is&nbsp;used&nbsp;for&nbsp;all&nbsp;three&nbsp;purposes,&nbsp;as&nbsp;shown&nbsp;in&nbsp;the&nbsp;following:&nbsp;<BR>&nbsp;<BR>sub&nbsp;print_form&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;($action,$message,$any)&nbsp;=&nbsp;@_;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;FORM&nbsp;METHOD=post&nbsp;ACTION=&quot;students.cgi&quot;&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=HIDDEN&nbsp;NAME=&quot;action&quot;&nbsp;VALUE=&quot;$action&quot;&gt;&nbsp;<BR>&lt;H1&gt;$message&lt;/h1&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;if&nbsp;($any)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;p&gt;Search&nbsp;for&nbsp;&lt;SELECT&nbsp;NAME=&quot;bool&quot;&gt;&nbsp;<BR>&lt;OPTION&nbsp;VALUE=&quot;or&quot;&gt;any&nbsp;<BR>&lt;OPTION&nbsp;VALUE=&quot;and&quot;&gt;all&nbsp;<BR>&lt;/select&gt;&nbsp;of&nbsp;your&nbsp;choices.&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>First:&nbsp;&lt;INPUT&nbsp;NAME=&quot;first&quot;&nbsp;SIZE=20&gt;&nbsp;<BR>&nbsp;Middle:&nbsp;&lt;INPUT&nbsp;NAME=&quot;middle&quot;&nbsp;SIZE=10&gt;&nbsp;<BR>&nbsp;Last:&nbsp;&lt;INPUT&nbsp;NAME=&quot;last&quot;&nbsp;SIZE=20&gt;&nbsp;<BR>&nbsp;Jr./III/etc.:&nbsp;&lt;INPUT&nbsp;NAME=&quot;ext&quot;&nbsp;SIZE=5&gt;&nbsp;<BR>&lt;br&gt;&nbsp;<BR>Address:&nbsp;&lt;INPUT&nbsp;NAME=&quot;address&quot;&nbsp;SIZE=40&gt;&lt;br&gt;&nbsp;<BR>City:&nbsp;&lt;INPUT&nbsp;NAME=&quot;city&quot;&nbsp;SIZE=20&gt;&nbsp;&nbsp;<BR>&nbsp;State:&nbsp;&lt;INPUT&nbsp;NAME=&quot;state&quot;&nbsp;SIZE=5&gt;&nbsp;<BR>&nbsp;ZIP:&nbsp;&lt;INPUT&nbsp;NAME=&quot;zip&quot;&nbsp;SIZE=10&gt;&lt;br&gt;&nbsp;<BR>Phone:&nbsp;&lt;INPUT&nbsp;NAME=&quot;phone&quot;&nbsp;SIZE=15&gt;&lt;br&gt;&nbsp;<BR>Age:&nbsp;&lt;INPUT&nbsp;NAME=&quot;age&quot;&nbsp;SIZE=5&gt;&nbsp;Sex:&nbsp;&lt;SELECT&nbsp;NAME=&quot;sex&quot;&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;if&nbsp;($any)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;OPTION&nbsp;VALUE=&quot;&quot;&gt;Doesn't&nbsp;Matter&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;OPTION&nbsp;VALUE=&quot;1&quot;&gt;Male&nbsp;<BR>&lt;OPTION&nbsp;VALUE=&quot;2&quot;&gt;Female&nbsp;<BR>&lt;/select&gt;&lt;br&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>Enrolled&nbsp;in:&lt;br&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;&amp;print_subjects(&quot;MULTIPLE&nbsp;SIZE=5&quot;);&nbsp;<BR>&nbsp;&nbsp;<BR>}&nbsp;<BR>By&nbsp;using&nbsp;three&nbsp;parameters,&nbsp;this&nbsp;function&nbsp;customizes&nbsp;a&nbsp;form&nbsp;template&nbsp;so&nbsp;that&nbsp;it&nbsp;can&nbsp;be&nbsp;used&nbsp;for&nbsp;several&nbsp;very&nbsp;different&nbsp;purposes.&nbsp;Notice&nbsp;that&nbsp;this&nbsp;helper&nbsp;function&nbsp;calls&nbsp;another&nbsp;helper&nbsp;function,&nbsp;print_subjects.&nbsp;This&nbsp;function&nbsp;queries&nbsp;the&nbsp;subject&nbsp;table&nbsp;as&nbsp;&nbsp;<BR>seen&nbsp;in&nbsp;the&nbsp;Msql.pm&nbsp;example&nbsp;and&nbsp;prints&nbsp;out&nbsp;a&nbsp;list&nbsp;of&nbsp;all&nbsp;of&nbsp;the&nbsp;available&nbsp;subjects.&nbsp;<BR>&nbsp;<BR>sub&nbsp;print_subjects&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$modifier&nbsp;=&nbsp;&quot;&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;$modifier&nbsp;=&nbsp;shift&nbsp;if&nbsp;@_;&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;qq%&lt;SELECT&nbsp;NAME=&quot;subjects&quot;&nbsp;$modifier&gt;\n%;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$out&nbsp;=&nbsp;$dbh-&gt;query(&quot;select&nbsp;*&nbsp;from&nbsp;subject&nbsp;order&nbsp;by&nbsp;name&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;while(my(%keys)=$out-&gt;fetchhash)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;qq%&lt;OPTION&nbsp;VALUE=&quot;$keys{'id'}&quot;&gt;$keys{'name'}\n%;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;/select&gt;\n&quot;;&nbsp;<BR>}&nbsp;<BR>The&nbsp;search&nbsp;parameters&nbsp;entered&nbsp;in&nbsp;this&nbsp;first&nbsp;form&nbsp;are&nbsp;then&nbsp;sent&nbsp;to&nbsp;the&nbsp;search2&nbsp;function,&nbsp;which&nbsp;actually&nbsp;performs&nbsp;the&nbsp;search.&nbsp;This&nbsp;is&nbsp;actually&nbsp;the&nbsp;function&nbsp;written&nbsp;to&nbsp;search&nbsp;for&nbsp;a&nbsp;student&nbsp;to&nbsp;view.&nbsp;Since&nbsp;its&nbsp;function&nbsp;is&nbsp;exactly&nbsp;what&nbsp;we&nbsp;need,&nbsp;we&nbsp;can&nbsp;&nbsp;<BR>piggy-back&nbsp;off&nbsp;of&nbsp;it&nbsp;as&nbsp;long&nbsp;as&nbsp;we&nbsp;tell&nbsp;it&nbsp;that&nbsp;we&nbsp;want&nbsp;to&nbsp;go&nbsp;to&nbsp;the&nbsp;next&nbsp;change&nbsp;function,&nbsp;change2,&nbsp;after&nbsp;the&nbsp;search.&nbsp;That&nbsp;is&nbsp;why&nbsp;we&nbsp;have&nbsp;the&nbsp;hidden&nbsp;variable&nbsp;subaction=change2&nbsp;in&nbsp;the&nbsp;form.&nbsp;It&nbsp;tells&nbsp;search2,&nbsp;as&nbsp;shown&nbsp;in&nbsp;the&nbsp;following,&nbsp;where&nbsp;to&nbsp;send&nbsp;the&nbsp;&nbsp;<BR>user&nbsp;next:&nbsp;<BR>&nbsp;<BR>sub&nbsp;search2&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$out&nbsp;=&nbsp;$dbh-&gt;query(&amp;make_search_query);&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$hits&nbsp;=&nbsp;$out-&gt;numrows;&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$subaction&nbsp;=&nbsp;&quot;view&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;$subaction&nbsp;=&nbsp;param('subaction')&nbsp;if&nbsp;param('subaction');&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;header,&nbsp;start_html('title'=&gt;'Student&nbsp;Search&nbsp;Result',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BGCOLOR'=&gt;'white');&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if&nbsp;(not&nbsp;$hits)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;H1&gt;No&nbsp;students&nbsp;found&lt;/h1&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>No&nbsp;students&nbsp;matched&nbsp;your&nbsp;criteria.&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;H1&gt;$hits&nbsp;students&nbsp;found&lt;/h1&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>&lt;UL&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(my(%fields)=$out-&gt;fetchhash)&nbsp;{&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -