
ユーザー検索機能が出来るようにカスタマイズしています。
member.datにユーザーデータが入ってます。
member.dat
$name,$add,$mail
実データ
田中誠,大阪府,hoge@hoge.com
伊藤武,東京都,hoge@hoge.com
田中信也,栃木県,hoge@hoge.com
中井洋子,東京都,hoge@hoge.com
石橋浩史,京都府,hoge@hoge.com
$keywordはこのプログラムの前に、<INPUT size="30" name="keyword">で格納しています。
$keywordには「田中」とデータが入っています。
検索プログラム user.cgi
省略・・・
open(DB,"$memfile") || &error("Can't write $memfile");
@lines = <DB>;
close(DB);
foreach ($start .. $end) {
($name,$add,$mail) = split("<>", $lines[$_]);
if ( $name!~ /($keyword)/){
print <<"EOM";
該当の名前
$name
EOM
exit;
}
}
以下省略・・・
$keyword に 「田中」と入っていた場合、1件目と3件目が表示されると思っているのですが、実際には1件目だけしか表示されません。
ifの条件式を変えればうまくいきそうな気がしてますが、よくわかりませんでした。
ご指導いただけますと助かります。
以上、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
$flg = 0;
open(DB,"$memfile") || &error("Can't write $memfile");
eval{flock(IN,1);};
$Mes = "該当の名前<br>";
while(<DB>){
($name,$add,$mail) = split(/,/);
if(index($name,$keyword) >= 0){
$Mes .= "・$name<br>";
$flg = 1;
}
}
close(DB);
#表示
if($flg){
print $Mes;
}else{
print "該当しませんでした";
}
これでできると思います。
気になる点は
1.splitが<>で区切っている
2.$start .. $endになにが代入されているか
です。
中2の回答なので変なところはあると思いますが参考までに。
taporuさん
回答ありがとうございます!!
早速やってみました!!
単体テストではバッチリです!!
非常に助かりました。
>中2の回答なので変なところはあると思いますが参考までに。
とんでもございません。
私こそ、質問の仕方が悪く理解出来ない部分もあったかと思います。
本当にありがとうございます。
No.1
- 回答日時:
exit; があると、とにもくもマッチしたらそれで終わり、になるので、foreachaの外側に置いてはどうでしょうか。
・・省略・・・
該当の名前
$name
EOM
}
}
exit;
この回答への補足
回答ありがとうございます。
早速exit; を外側に置いてみましたが、変わりませんでした。
また条件式を
if ( $name!~ /($keyword)/){
を
if ( $name =~ /$keyword/){
に変えてみました。
感覚的で申し訳ないのですが、1件目しか処理をしていないような感じです。
このやり方に問題があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
perlをバージョンアップしたら...
-
秀丸での一括変換について
-
pythonの作業ディレクトリに変...
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
Blenderについて
-
Perl(Windows)の文法について
-
Perlの質問:行と列を入れ替え...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
-
Perlで時間の計算
-
perlの構文でカンマの意味が分...
-
PERL
-
Perlでファイルの末尾から指定...
-
Perlで特定文字列から特定文字...
-
Strawberry Perl for Windows ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
openした後、closeしないでプロ...
-
Perlのエラーについてご教授く...
-
テキストファイルで提出とは?
-
perlプログラミング 空白行削除
-
Strawberry Perl for Windows ...
-
Windows10においての『Perl』の...
-
LinuxにおいてのPerlのプログラ...
-
perlのrequireの動き方について...
-
perlをバージョンアップしたら...
-
bashスクリプト
-
TeraPadエディターの操作方法に...
-
#!/usr/bin/perlで書きだしたCG...
-
Windows版のPerlについて
-
アルファベットに付いて質問し...
-
perl このテキストファイルを簡...
-
Wallpaper Engineでおすすめの...
-
perlで文字の置換又は抽出に関...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
おすすめ情報