📄 forum.pl
字号:
#!perl
# Fig. 22.38: forum.pl
# Display forum postings for non-XSL browser
use warnings;
use strict;
use CGI qw( :standard *center *table );
use XML::Parser;
use Fcntl qw( :flock );
print( redirect( "error.html" ) ) if not param();
my ( $file, $parser, %info );
$file = param( "file" );
$file =~ /^\w+\.xml$/ or die( "Not a valid file: $!" );
open( FORUM, "../htdocs/XML/$file" ) or
die( "Could not open: $!" );
flock( FORUM, LOCK_SH );
$parser = new XML::Parser( Style => "Subs",
Handlers => { Char => \&text } );
$parser->parse( \*FORUM );
close( FORUM );
sub forum
{
print( header );
}
sub forum_
{
print( br, start_center,
a( { -href => "/cgi-bin/addPost.pl?file=$file" },
"Post a Message" ),
br, br,
a( { -href => "/cgi-bin/default.pl" },
"Return to Main Page" ),
end_center, end_html );
}
sub name_
{
print( start_html( -title => $info{ "name" },
-style => { -src => "/XML/site.css" } ),
start_table( { -width => "100%",
-cellspacing => "0",
-cellpadding => "2" } ),
Tr( td( { -class => "forumTitle" }, $info{ "name" } ) ),
end_table, br );
}
sub message
{
my ( $expat, $element, %attributes ) = @_;
$info{ "date" } = $attributes{ "timestamp" };
}
sub message_
{
print( start_table( { -width => "100%",
-cellspacing => "0",
-cellpadding => "2" } ),
Tr( [ td( { -class => "msgTitle" }, $info{ "title" } ),
td( { -class => "msgInfo" },
" by " . em( $info{ "user" } ) . " at " .
span( { -class => "date" }, $info{ "date" } ) ),
td( { -class => "msgText" }, $info{ "text" } ) ] ),
end_table );
}
sub text
{
my ( $expat, $string ) = @_;
$info{ $expat->current_element } = $string;
}
##########################################################################
# (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall. #
# All Rights Reserved. #
# #
# DISCLAIMER: The authors and publisher of this book have used their #
# best efforts in preparing the book. These efforts include the #
# development, research, and testing of the theories and programs #
# to determine their effectiveness. The authors and publisher make #
# no warranty of any kind, expressed or implied, with regard to these #
# programs or to the documentation contained in these books. The authors #
# and publisher shall not be liable in any event for incidental or #
# consequential damages in connection with, or arising out of, the #
# furnishing, performance, or use of these programs. #
##########################################################################
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -