
ユーザー検索機能が出来るようにカスタマイズしています。
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのcondaコマンドの仕様について 2 2022/06/24 00:13
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl 正規表現でエラー
-
bashスクリプト
-
perlで2次元配列をサブルーチ...
-
openした後、closeしないでプロ...
-
Perlのエラーについてご教授く...
-
perlプログラミング 空白行削除
-
perlについて
-
perlをバージョンアップしたら...
-
Perlでの文字列置換
-
フローチャート 九九
-
perlについての質問
-
INDIRECT 横に再度抽出したい
-
テキストファイルで提出とは?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
マンスリーランキングこのカテゴリの人気マンスリー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関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
おすすめ情報