当サイトはQ&A掲示板(コミュニティ)の窓口を共有して下さるサイト様を募集しています。
[Q&A掲示板] 共有サイト様募集!#!/usr/bin/perl # 検索の対象とする拡張子 @SEARCH = ('html', 'htm', 'shtml'); # デコード処理 if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } @args = split(/&/, $query); foreach $i (@args) { ($name, $val) = split(/=/, $i); $name =~ tr/+/ /; $name =~ s/%([0-9a-fA-F]{2})/pack('C', hex($1))/eg; $val =~ tr/+/ /; $val =~ s/%([0-9a-fA-F]{2})/pack('C', hex($1))/eg; $in{$name} = $val; } # ワードが入力されていないなら unless($in{'word'}) { print "Content-type: text/html\n\n"; print "検索ワードを入力してください!\n"; exit; } # 全角空白を半角空白に変換 $in{'word'} =~ s/ / /g; # 検索ワードを分割 @word = split(/ /, $in{'word'}); opendir(DIR, "./"); while($file = readdir(DIR)) { my($f) = 0; # 検索対象の拡張子かどうか foreach(@SEARCH) { $f = 1 if($file =~ /$_$/); } # 検索対象の拡張子でないなら next unless($f); $f = 0; open(DATA, "< $file"); my(@line) = <DATA>; close(DATA); # 検索開始 foreach $w (@word) { foreach $l (@line) { # 検索ワードが一致したなら if($l =~ /$w/) { $f++; last; } } } # 検索ワードがすべて一致したなら if($f == @word) { # URLを配列へ追加 push(@url, $file); } } closedir(DIR); # 配列の要素数取得 $n = @url; print "Content-type: text/html\n\n"; if($n) { # 検索に引っかかったなら foreach(@url) { print "・ <a href=\"$_\">$_</a>\n<br>"; } } else { # 検索に引っかからなかったら print "一致するワードはありませんでした。\n"; }