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

📄 ch18.htm

📁 CGI programming is the hottest stuff to look out for in this book
💻 HTM
📖 第 1 页 / 共 5 页
字号:
END<BR>
<BR>
}<BR>
<BR>
#<BR>
# the following subroutine presents a threaded list of postings
which<BR>
# may be removed by either thread or individual posting, depending
on<BR>
# the value of the $mode variable<BR>
#<BR>
sub query_remove {<BR>
<BR>
&nbsp;&nbsp;&nbsp;print &quot;Content-type: text/html\n\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;print &lt;&lt;END;<BR>
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Discussion Forum Administration&lt;/TITLE&gt;&lt;/HEAD&gt;
<BR>
&lt;BODY&gt;<BR>
END<BR>
&nbsp;&nbsp;&nbsp;&amp;get_posts;<BR>
<BR>
&nbsp;&nbsp;&nbsp;if ( $#posts == -1 ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;H4&gt;No postings
found&lt;/H4&gt;\n&lt;/BODY&gt;&lt;/HTML&gt;&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>
&nbsp;&nbsp;&nbsp;} elsif ( $mode eq 'posts' ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;H3&gt;Discussion
Forum Administration : Remove Individual&quot;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; Postings&lt;/H3&gt;\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;FORM METHOD=POST
ACTION=$prog_url&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;INPUT TYPE=HIDDEN
NAME=method VALUE=\&quot;posts\&quot;&gt;\n&quot;;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$code = 'POST';<BR>
&nbsp;&nbsp;&nbsp;} elsif ( $mode eq 'thread' ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;H3&gt;Discussion
Forum Administration : Remove Threads&lt;/H3&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;P&gt;Clicking
in a checkbox will remove that posting and all&quot;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;its children upon form
submission.&lt;/P&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;FORM METHOD=POST
ACTION=$prog_url&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;INPUT TYPE=HIDDEN
NAME=method VALUE=\&quot;thread\&quot;&gt;\n&quot;;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$code = 'THREAD';<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
#<BR>
# reconstructs header fields from posting and place into the list
<BR>
#<BR>
&nbsp;&nbsp;&nbsp;$ul_count = 0;<BR>
&nbsp;&nbsp;&nbsp;foreach $i ( 0 .. $#posts ) {<BR>
<BR>
#<BR>
# this if structure implements my &quot;typographical trick&quot;
which threads<BR>
# postings based solely on their file names.&nbsp;&nbsp;&quot;bits&quot;
of posting names,<BR>
# separated by '_', are compared, first to see how many left-most
bits<BR>
# the current posting has in common with its immediate predecessor,
<BR>
# and then the signed inequality of right-most not-in-common bits
is<BR>
# used to determine the extent of &lt;UL&gt; pushing/popping needed
to thread<BR>
#<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $i != 0 ) {<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this =
$posts[$i];<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$previous
= $posts[$i-1];<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@this_bits
= split(/-/,$this);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@previous_bits
= split(/-/,$previous);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $#this_bits
&gt; $#previous_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lesser_bits
= $#previous_bits;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lesser_bits
= $#this_bits;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$common
= 0;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for $j (
0 .. $lesser_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last
if $this_bits[$j] ne $previous_bits[$j];<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$common++;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;splice(@this_bits,$[,$common);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;splice(@previous_bits,$[,$common);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $common
== 0 ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while
( $ul_count ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print
&quot;&lt;/UL&gt;&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count--;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if
( $#this_bits &gt; $#previous_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for
$k ( 1 .. ($#this_bits - $#previous_bits) ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print
&quot;&lt;UL&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count++;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
elsif ( $#this_bits &lt; $#previous_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for
$k ( 1 .. ($#previous_bits - $#this_bits) ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print
&quot;&lt;/UL&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count--;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this =
$posts[0];<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;UL&gt;\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open(POST,&quot;$this.post&quot;);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;read_header;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(POST);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;LI&gt;&lt;I&gt;remove&lt;/I&gt;
&lt;INPUT TYPE=checkbox NAME=\&quot;$code$this\&quot;&gt; &quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;FONT SIZE=-1&gt;&lt;A
HREF=$forum_url?$this&gt;$subject&lt;/A&gt; &quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;$author &quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( defined($to) ) { print
&quot;&lt;B&gt;&lt;I&gt;To:&lt;/I&gt;&lt;/B&gt; $to &quot;; }
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;I&gt;&lt;B&gt;On:&lt;/B&gt;
$time&lt;/I&gt;&lt;/FONT&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;while ( $ul_count ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;/UL&gt;&quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count--;<BR>
&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;print &quot;&lt;/UL&gt;\n&lt;HR&gt;\n&quot;;
<BR>
<BR>
&nbsp;&nbsp;&nbsp;print &quot;&lt;P&gt;&lt;INPUT TYPE=SUBMIT NAME=submit
VALUE=\&quot;Submit this form\&quot;&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;print &quot;&lt;INPUT TYPE=reset NAME=reset
VALUE=\&quot;Reset this form\&quot;&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;print &quot;\n&lt;/FORM&gt;\n&quot;;<BR>
<BR>
&nbsp;&nbsp;&nbsp;print &quot;&lt;/BODY&gt;&lt;/HTML&gt;\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;exit 0;<BR>
}<BR>
<BR>
#<BR>
# - it's easy to remove posts -- just delete the corresponding
.post file<BR>
# - proper threading is maintained by the spiffy &quot;typographic
data structure&quot;<BR>
#<BR>
sub remove_posts {<BR>
<BR>
&nbsp;&nbsp;&nbsp;foreach $key ( keys %input ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $key =~ /POST/ ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;substr($key,$[,4)
= '';<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system(&quot;rm
$key.post&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&amp;report_removal;<BR>
}<BR>
<BR>
#<BR>
# - it's easy to remove threads -- just delete the corresponding
.post file<BR>
# - proper threading is maintained by the spiffy &quot;typographic
data structure&quot;<BR>
#<BR>
sub thread_remove {<BR>
<BR>
&nbsp;&nbsp;&nbsp;foreach $key ( keys %input ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $key =~ /THREAD/ ) {
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;substr($key,$[,6) = '';<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system(&quot;rm $key*.post&quot;);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&amp;report_removal;<BR>
}<BR>
<BR>
#<BR>
# generate the form which asks for names of to-be-removed authors
<BR>
#<BR>
sub query_author_remove {<BR>
<BR>
&nbsp;&nbsp;&nbsp;&amp;get_posts;<BR>
<BR>
#<BR>
# build list of author names and their corresponding postings
by<BR>
# parsing the entire collection of postings<BR>
#<BR>
&nbsp;&nbsp;&nbsp;foreach $post ( @posts ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open(POST,&quot;$post.post&quot;);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;read_header;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$allauthors{$author} .= &quot;&lt;LI&gt;&lt;A
HREF=$forum_url?$post&gt;$subject&lt;/A&gt; &quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$allauthors{$author} .= &quot;$author
&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( defined($to) ) { $allauthors{$author}
.= &quot;&lt;B&gt;&lt;I&gt;To:&lt;/I&gt;&lt;/B&gt; $to &quot;;
}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$allauthors{$author} .= &quot;&lt;I&gt;&lt;B&gt;On:&lt;/B&gt;
$time&lt;/I&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(POST);<BR>
&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;foreach $key ( keys(%allauthors)) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;substr($allauthors{$key},$[,0)
= &quot;&lt;UL&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;substr($allauthors{$key},-1,0)
= &quot;\n&lt;/UL&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;print &quot;Content-type: text/html\n\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;print &lt;&lt;END;<BR>
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Discussion Forum Administration&lt;/TITLE&gt;&lt;/HEAD&gt;
<BR>
&lt;BODY&gt;<BR>
&lt;H3&gt;Discussion Forum Administration : Remove Postings by
Author&lt;/H3&gt;<BR>
&lt;FORM ACTION=$prog_url METHOD=POST&gt;<BR>
&lt;INPUT TYPE=HIDDEN NAME=method VALUE=&quot;author&quot;&gt;
<BR>
&lt;TABLE BORDER CELLPADDING=8&gt;<BR>
&lt;TR&gt;&lt;TH VALIGN=TOP ALIGN=CENTER&gt;Author Name&lt;/TH&gt;
<BR>
&lt;TH VALIGN=TOP ALIGN=CENTER&gt;Check to Remove&lt;/TH&gt;<BR>
&lt;TH VALIGN=TOP ALIGN=CENTER&gt;This Author's Postings&lt;/TH&gt;&lt;/TR&gt;
<BR>
END<BR>
&nbsp;&nbsp;&nbsp;foreach $authname (sort case_insensitive (keys(%allauthors)))
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;TR&gt;&lt;TD
VALIGN=TOP ALIGN=LEFT&gt;$authname&lt;/TD&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;TD VALIGN=TOP
ALIGN=CENTER&gt;&lt;INPUT TYPE=chECKBOX NAME=\&quot;AUTHOR&quot;
.<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;hex_encode($authname)
. &quot;\&quot;&gt;&lt;/TD&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;TD VALIGN=TOP
ALIGN=LEFT&gt;$allauthors{$authname}&lt;/TD&gt;&lt;/TR&gt;\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;print &lt;&lt;END;<BR>
&lt;/TABLE&gt;<BR>
&lt;P&gt;&lt;INPUT TYPE=SUBMIT NAME=submit VALUE=&quot;Submit
this form&quot;&gt;<BR>
&lt;INPUT TYPE=reset NAME=reset VALUE=&quot;Reset this form&quot;&gt;&lt;/FORM&gt;
<BR>
&lt;/BODY&gt;&lt;/HTML&gt;<BR>
END<BR>
&nbsp;&nbsp;&nbsp;exit 0;<BR>
}<BR>
<BR>
#<BR>
# it's easy to remove postings by authors -- once you have the
author's<BR>
# name, just scan through all header fields and check to see if
the name<BR>
# in the header field matches the name to be deleted<BR>
#<BR>
sub author_remove {<BR>
<BR>
&nbsp;&nbsp;&nbsp;local($i,$mark);<BR>
<BR>
&nbsp;&nbsp;&nbsp;foreach $auth ( keys(%input) ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next if !($auth =~ /^AUTHOR/);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;substr($auth,$[,length('AUTHOR'))
= '';<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ex_authors[$i++] = &amp;hex_decode($auth);
<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&amp;get_posts;<BR>
<BR>
POSTINGS:&nbsp;&nbsp;&nbsp;foreach $post ( @posts ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open(POST,&quot;$post.post&quot;);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;read_header;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(POST);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach $entry ( @ex_authors
) {<BR>

⌨️ 快捷键说明

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