#!/Perl5.8/bin/perl.exe use LWP::Simple; use CGI qw(:cgi); use URI::Escape; ### 初期設定(必要な場合、デフォルト項目のみ設定してください) # baseurlの設定 #$baseurl = "http://localhost/cgi-bin";### デフォルト ### # 検索パターンの取得 my $pattern = ".";#### デフォルト ### if($ARGV[0]){ $pattern = $ARGV[0];# コマンドライン第1引数から }elsif(param('pattern')){ $pattern = param('pattern');# CGIのパラメータ、patternから } # usernameの取得 my $tw_user = "jscripter";### デフォルト ### if($ARGV[1]){ $tw_user = $ARGV[1];# コマンドライン第2引数から }elsif(param('tw_user')){ $tw_user = param('tw_user');# CGIのパラメータ、tw_userから } # ツイートの格納ディレクトリの設定 my $basedir = "C:/anhttpd/cgi-bin";### デフォルト ### ### # 西暦年4桁のディレクトリ名の取得 my @yeardirs = (); opendir(DIR, $basedir) || die "Can't open"; my @yeardirs = grep(/^\d{4}$/, readdir(DIR)); closedir(DIR); ### CGI 最初の部分の出力 print < HEADER ### my $year = ""; my $mon = ""; my $user = ""; my @mondirs = (); my @users = (); my $udir = ""; foreach $year (@yeardirs){ #print "YEAR: $year\n"; # 西暦年ディレクトリ下、月2桁のディレクトリ名の取得 opendir(YDIR, $basedir . "/" . ${year}) || die "Can't open: $!"; @mondirs = grep(/^\d{2}$/, readdir(YDIR)); closedir(YDIR); foreach $mon (@mondirs){ #print "MONTH: $mon\n"; if($tw_user =~ /^all$/i){ # 西暦年4桁月2桁のディレクトリ下、ユーザーのディレクトリ名の取得 opendir(MDIR, $basedir . "/" . $year . "/" . $mon) || die "Can't open: $!"; @users = grep(/^\w+$/, readdir(MDIR)); closedir(MDIR); foreach $user (@users){ $udir = $basedir . "/" . $year . "/" . $mon . "/" . $user; &twsearch($udir, $pattern); } }else{ $udir = $basedir . "/" . $year . "/" . $mon . "/" . $tw_user; &twsearch($udir, $pattern); } } } # CGIの最後の部分の出力 print "\n\n"; # 西暦年4桁月2桁ユーザー名ディレクトリ下、ツイートテキストの取得 sub twsearch{ my($udir, $pattern) = @_; my @txts = (); my $txt = ""; my $html = ""; if(opendir(UDIR, $udir)){ @txts = grep(/^\d{14}/, readdir(UDIR)); closedir(UDIR); # ツイートテキストの検索出力 foreach $txt (@txts){ open(IN, $udir . "/" . $txt) || die "Can't open: $!"; while(){ $html .= $_; } close(IN); if($html =~ />.*?$pattern.*?User Directory: $udir; Pattern: $pattern

\n"; print "[" . ++$num . "]\n"; print $html; } $html = ""; } } 1; } __END__