ちょっとWindows Http鯖用に簡易検索CGI作った。全文でない。
麻帆良学園中等部2-A/ハッピー☆マテリアル_輝く君へ〜Peace を検索したときに
コード変換がうまく言ってなかったので修正。
#!c:/perl/bin/perl use strict; use DirHandle; use CGI; use URI::Escape; # %20%32.. <-> uri_unescape, uri_escape use utf8; use Encode qw/ decode encode from_to /; #use Encode::JIS2K; my $q = new CGI; my %dirs = qw[ I:/cdda/ http://5.5.55.55/cdda/ I:/mp3/ http://5.5.55.55/mp3/ J:/YouTUBE/ http://5.5.55.55/YouTUBE/ ]; my $search = $q->param('search'); print $q->header(-charset => "utf8"), $q->start_html, $q->startform(), $q->textfield(-name=>'search',-default=>$search), $q->submit(-name=>'Search'), $q->endform; if($search) { foreach(keys %dirs) { &dir_find($_,$_,$dirs{$_},''); } } print $q->end_html; # ------------------------------------------------------------------- sub dir_find { my($base,$target,$dname,$fname) = @_; my $name; my $dir = new DirHandle $base; while ($name = $dir->read) { next if($name =~ /\.\./); my $tfile = "$base/$name"; my $size = -s "$tfile"; # from_to( $name, 'shiftjis', 'utf8'); 〜 ←化ける # from_to( $name, 'shiftjisx0213', 'utf8'); JIS2K入んない from_to( $name, 'cp932', 'utf8'); next unless ("$fname $name" =~ /$search/x); my $href = uri_escape($name); print $q->a({-href=>"$dname$href"}, "$fname/$name"); print "$size bytes" if(-f $tfile); print $q->br; &dir_find($tfile,$target,"$dname$href/", $name) if(-d $tfile); } $dir->close; }