使用HTML::Pager可以写一个列出电子书的cgi小程序,在此基础上,可以很容易地增加文件名搜索功能。
首先增加搜索框和按钮,只需修改最后的打印语句:
my $title = "Book List ($num_of_books)"; print $cgi->header, $cgi->start_html($title), $cgi->h3($title), $pager->output, $cgi->h3('Book Search'), $cgi->start_form, $cgi->textfield('search'), $cgi->submit, $cgi->end_form, $cgi->end_html;
接下来要构造搜索匹配字符串表,当输出框内为空时,搜索结果与以前一样,否则搜索结果应该包括所有用户提供的单词,为了简单起见,我们认为单词由空格分隔,暂不考虑引号。
my $cgi = CGI->new; my @search_pattern = (qr/.(?:chm|pdf)$/i); if ($cgi->param('search')) { push @search_pattern, map { qr/Q$_E/i } split('s+', $cgi->param('search')); } my @books; sub search_book { for my $pattern (@search_pattern) { return unless $_ =~ /$pattern/; } push @books, $_; } find( { wanted => &search_book, no_chdir => 1 }, '.');
程序截图如下:
share your e-book with me…hehe