我必须在网站上显示搜索结果。我正在从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>";
我认为这是指定提示错误的分配。但我尝试过其他方法无济于事。
答案 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>";