如何在html perl脚本上打印File :: Find的结果?

时间:2016-05-29 02:18:00

标签: perl

我必须在网站上显示搜索结果。我正在从html表单中收到搜索参数。当我尝试这个时:

<button class="close closeTab" type="button" onclick="close_tab(this)" >×</button>

我收到以下错误:

#!/usr/bin/perl
use CGI qw(:standard);
use File::Find;
my $search = param('value');
my $result = `print find(sub {print $File::Find::name if ($_ eq $search);
}, '/home');`

print "Content-type:text/html\n\n";

print "<html>";
print "<head></head>";
print "<body";
print "$result";
print "</body>";
print "</html>";

我认为这是指定提示错误的分配。但我尝试过其他方法无济于事。

1 个答案:

答案 0 :(得分:3)

你的问题又回来了。返回仅用于执行linux命令。

print find(sub {print $File::Find::name if ($_ eq $search); }, '/home');这不是linux命令。这是perl脚本。

所以你的脚本应该如下

#!/usr/bin/perl
use CGI qw(:standard);
use File::Find;
my $search = param('value');
my $result;
find( sub { $result.=$File::Find::name if ($_ eq $search ); }, "/home");

print "Content-type:text/html\n\n";

print "<html>";
print "<head></head>";
print "<body>";
print "$result\n\n";
print "</body>";
print "</html>";

您想要使用-e -M开关在后面运行perl one liner执行结果。 -e执行perl命令。 -M切换使用for包含你oneliner中的模块。那么应该如下

#!/usr/bin/perl
use CGI qw(:standard);
my $search = param('value');
my $result = ` perl -MFile::Find -e 'print find(sub {print $File::Find::name if(/^$search\$/);}, "/home" )'`;

print "Content-type:text/html\n\n";

print "<html>";
print "<head></head>";
print "<body>";
print "$result";
print "</body>";
print "</html>";