前のcgiより変数syouhinkensakuを受け取り、特定の文字列を含むファイルを検索しようとしてもうまく行きません。どこが悪いのかご指摘の程よろしくお願い致します。
#use strict; use warnings; use utf8; use CGI; my $query = new CGI; use CGI qw(:standard); use File::Copy; #binmode STDIN, ':utf8'; #binmode STDOUT, ':utf8'; #binmode STDERR, ':utf8'; #use strict; #use warnings; #use DBI; #use DBD::SQLite; #追加use #use utf8; #use CGI; #$query = new CGI; #use CGI qw(:standard); #use File::Copy; #binmode STDIN, ':utf8'; #binmode STDOUT, ':utf8'; #binmode STDERR, ':utf8'; #use strict; #use warnings; #追加use終了 #binmode STDIN, ':encoding(cp932)'; #binmode STDOUT, ':encoding(cp932)'; #binmode STDERR, ':encoding(cp932)'; $syouhinkensaku = $query->param('syouhinkensaku'); $dir = "syouhin"; chdir $dir or die "Cannot change working directory $dir: $!"; @file = glob "*"; #@syouhinfile=join(",", @file)"\n"; @syouhinfile=join(",", @file); #$abc = "kensakuitiji.txt"; #open(OUT, ">> $abc") || die("ファイルを追記モードで開けませんでした"); #$msg2 = "@file\n"; #print OUT $msg2; #close(OUT); $i=0; $h=0; @sub2; if($syouhinkensaku ne ""){ while($i!=-1){ $i=index(@syouhinfile,$syouhinkensaku,$h); $j=$i; while(1){ $sub = substr(@syouhinfile,$i, 1); if($sub eq ","){ last; $i=$i-1; } } $i=$i+1; while(1){ $sub = substr(@syouhinfile,$j, 1); if($sub eq ","){ last; $j=$j+1; } } $j=$j-1; $k=$j-$i-1; $l=$l+1; $sub2[$l] = substr(@syouhinfile,$i,$k); $h=$i+1; #$i=-1; } } print "Content-type: text/html\n\n"; print<<"HTML"; <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>検索ヒット</title> </head> <body bgcolor="#000066" text="#ff0000" link="#0000ee" alink="#0000ee" vlink="#551a8b"> <form action="b5.cgi"> <form> @syouhinfile<br> for($m=1;$m=$l;$m++){ $sub2[$m]<br> } <input type="submit" onclick="location.href'b5.cgi'" value="NEXT"><input type="reset" value="RESET"> </form> <br> <br> </body> </html> HTML exit;
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。