文件系统中的Perl搜索-在web上显示结果

文件系统中的Perl搜索-在web上显示结果,perl,Perl,大家好, 我根本不是程序员,所以我非常感谢你的帮助。 我有一个服务器,它保存以下目录结构中的文件: /usr/httpd/htdocs/statements 在这个声明目录下,我有许多子目录: ab、ac、ad等。这些是指不同的站点。 在网站下,我有目录,基本上是年和月的格式 201101 201102 有很多这样的目录包含扩展名为.body的文件。此类文件的典型示例如下: S117873000.body S117873000x.body 我有一个web界面,用户可以在其中输入一个数字来搜

大家好, 我根本不是程序员,所以我非常感谢你的帮助。 我有一个服务器,它保存以下目录结构中的文件:

/usr/httpd/htdocs/statements
在这个声明目录下,我有许多子目录: ab、ac、ad等。这些是指不同的站点。 在网站下,我有目录,基本上是年和月的格式

201101
201102
有很多这样的目录包含扩展名为.body的文件。此类文件的典型示例如下:

S117873000.body
S117873000x.body
我有一个web界面,用户可以在其中输入一个数字来搜索,例如:S117873000

HTML搜索:

    print "</select></td><td>
                <form method=POST action=/cgi-bin/search.pl>
                enter a number to search for:
                <input type=text name=query size=15>
                </td></tr><tr><td colspan=2><center><input type=submit value=Search <input type=reset>
                </center></form></td></tr>\n";
我尝试编写一些perl来递归搜索这些目录,并在用户可以单击的链接中为用户显示结果。我已经删除了我尝试过的大部分内容,因此下面的内容不会显示太多。我需要从web搜索中提取参数,递归搜索匹配的数字,并显示指向它的链接

search.pl
这应该可以用,或者类似的东西

我设法用下面的代码使它工作。我只需要显示一个超链接的结果,以便用户可以点击它。目前,它在一行中显示所有结果,没有超链接。 /usr/httpd/htdocs/statements/ec/200501/T047906000x.body/usr/httpd/htdocs/statements/ec/200501/T047906000.body

关于如何用可点击的超链接在一行上显示结果,有什么想法吗

!/usr/bin/perl-w 使用CGI qw:标准; 严格使用; 使用警告; 使用File::Find; my$dir='/usr/httpd/htdocs/statements/'; 收集网页提交的“查询”的值 my$cgi=新cgi; my$query=$cgi->param'query'; 打印头; 打印start_html; 为了方便通缉电话,包括-eval语句: 使用变量qw/*name*dir*prune/; *name=*文件::查找::名称; *dir=*File::Find::dir; *prune=*File::Find::prune; 次级通缉犯; 遍历所需的文件系统 文件::Find::Find{wanted=>\&wanted},“/usr/httpd/htdocs/statements/”; 出口 通缉犯{ /^$query.*\z/s&& 打印$name\n; } 打印结束html
#!/usr/bin/perl -w
use CGI qw(:standard);
use strict;
use warnings;
use File::Find;
my $dirs = '/usr/httpd/htdocs/statements/';
## Collect the value of 'query' submitted by the webpage
my $cgi = new CGI;
my $query=$cgi->param('query');

find( sub
{}
'$dirs');


sub return_html {
   print "Content-type: text/html\n\n";
   print "<html>\n <head>\n  <title>Results of Search</title>\n </head>\n";
   print "<ul>\n";

   print "<li><a href=\......\n";
}
my $query = $cgi->param('query');
print header;
use vars qw/*name *dir *prune/;
*name   = *File::Find::name;
*dir    = *File::Find::dir;
*prune  = *File::Find::prune;
find ( sub
{
  print 'Results:';
  /$query/ && print $name . "\n";
}, $dirs);