2016-05-29 8 views
0

ウェブサイトでの検索結果を表示する必要があります。私は、HTMLフォームから検索パラメータを受け取ります。私はこれをしようとすると:File :: Findの結果をhtml perlスクリプトで出力するにはどうしたらいいですか?

#!/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>"; 

私は次のエラーを取得:

syntax error at ./search.pl line 8, near "print" 
Execution of ./search.pl aborted due to complication errors. 

私はそれはそれはエラーを促すだ見つけるの割り当てだと思うが。しかし、私は役に立たない他の方法を試みました。

答えて

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の1つのライナーを実行従うようにする必要があります。 -eを実行してperlコマンドを実行します。 -M forを使用してスイッチをオンライナーに組み込みます。したがって、それは次のようにする必要があります

#!/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>"; 
関連する問題