データリストにデータが無い場合に追加する
db.logファイルにgooのデータが無い場合に追加するcgiを作ってみたのですが、下記の様にダブって登録されてしまうのですが、ダブらずに登録するようにするにはどの様にすれば良いのでしょうか?
サーバーはUNIXでWindowsXPからdb.logファイルをサーバーに転送させました。
それと$Check_list !~ m/($bb)/でリストにあるかないかを判断してるのですが、他に良いチェック方法ないでしょうか?
<CGIアクセス前のdb.logファイル>
yahoo;http://www.yahoo.co.jp;
google;http://http://www.google.co.jp;
<CGIアクセス後のdb.logファイル>
yahoo;http://www.yahoo.co.jp;
google;http://http://www.google.co.jp;goo;http://www.goo.ne.jp;
goo;http://www.goo.ne.jp;
<CGIファイル>
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print<<"end";
<HTML><BODY>
end
open(Check_DB," < db.log");
while ($_=<Check_DB>){
($a,$b) = split(/;/,$_);
$Check_list.= "$b";
}
close(Check_DB);
$aa="goo";
$bb="http://www.goo.ne.jp";
if ($Check_list !~ m/($bb)/){
open(ADD_DB,">>db.log");
print ADD_DB "$aa;$bb;\n";
close(ADD_DB);
}
open(Print_DB," < db.log");
while ($_=<Print_DB>){
($a,$b) = split(/;/,$_);
print " サイト名 :$a URL :$b<BR>";
}
close(Print_DB);
print "</BODY></HTML>";
お礼
早速の回答ありがとうございます。 イメージが湧かなかったのでとても参考になりました。