#! /usr/bin/perl # # ffind.cgi # # 1.0 : 4/13/08 : Initial revision. # # http://www.hidekik.com # # Copyright(c) 2008, Hideki Kanayama All Rights Reserved use strict; use CGI::Carp qw(fatalsToBrowser); use CGI; use File::Basename; my $version = "1.0"; my $lastupdatedyear = "2008"; my $script = basename($0); my $q = new CGI; my $cgierror = $q->cgi_error; &error($cgierror) if ($cgierror); my $mode = $q->param('mode'); my $search_file = $q->param('filename'); my $lang = 0; my $charset = "Shift_JIS"; # 検索するディレクトリのルート。相対パス、絶対パス両方可。 # 複数指定の場合は、「my @search_root = qw(. ../htmldir)」のようにできます。 my @search_root = qw(.); # 戻るリンク my $back = "ffind.html"; my $backlink = "解説ページへ"; &inpage; sub inpage { my $title = ('File Find'); &htmlhead($title); &inputform; print ""; print "$backlink"; print "

\n"; if ($mode eq 'find'){ foreach my $sr (@search_root) { &ffind($sr); } } &htmltail; } sub inputform { print "

\n"; print "
\n"; print "ファイル名に含まれる文字列"; print "

\n"; print "\n"; print "\n"; print "

\n"; print "
\n"; } sub htmlhead { my $title = shift; print $q->header(-charset=>"$charset"); print ""; print < $title HEADPRINT } sub htmltail { my $mysite = ('http://www.hidekik.com/','http://www.hidekik.com/en/')[$lang]; print "
$script $version
Copyright(c) $lastupdatedyear, hidekik.com
\n"; print ""; print ""; exit; } sub ffind { my $dir = shift; opendir(DLDIR, "$dir") or &error("ディレクトリ$dirが存在しません。"); my @dirs = grep !/^\./, readdir DLDIR; closedir(DLDIR); foreach my $tmp (@dirs){ if (-d "$dir/$tmp"){ &ffind("$dir/$tmp"); } elsif ($tmp =~ /$search_file/i){ print "$dir/$tmp
\n"; } } } sub error { my ($msg) = shift; &htmlhead($msg); print "
$msg
\n"; &htmltail; exit; }