Jag antar att du (naturligtvis ;)) loopar igenom alla rader och kör if-satsen varje gång?
kan du kanske klistra in lite mer kod så vi får en känsla för sammanhanget?
Perl & Rubyur Perl, Python, Ruby och övrig CGI
3 svar · 257 visningar · startad av Kent
Hej, håller på att bygga en sökmotor som ska söka efter personer,
men den funkar inte riktigt som jag vill, koden som söker igenom textfilen ser ut som följer:
if (($data[0] =~ /$namn/i) || ($data[1] =~ /$epost/i) || ($data[2] =~ /$hemsida/i) || ($data[3] =~ /$intresse/i)) {
resultaten
}
Söker jag efter ex Oskar under namn så visas det bara 1 träff, när det
igentligen ska ge 30 träffar, hur löser jag detta?
Har jag bara en sökslinga ex, if ($data[0] =~ /$namn/i) {
så funkar det utan problem, men det är när jag sätter ihop en lång sökslinga som det krånglar till sig.
Jag antar att du (naturligtvis ;)) loopar igenom alla rader och kör if-satsen varje gång?
kan du kanske klistra in lite mer kod så vi får en känsla för sammanhanget?
Javisst loopar jag igenom posterna, kod:
open (DATA, "data.txt") || error("Fel.");
@poster = <DATA>;
$rad = @poster;
close DATA;
$raknare = 0;
foreach $rad (@poster) {
@data = split(/\|/,$rad);
if (($data[0] =~ /$namn/i) || ($data[1] =~ /$epost/i) || ($data[2] =~ /$hemsida/i) || ($data[3] =~ /$intresse/i)) {
# resultat
$raknare++;
}
}
Sökningen gav: $raknare träffar.
Hej,
jag tror att du ska slänga in en /g dvs
if (($data[0] =~ /$namn/ig)
då söker den igenom hela raden istället för att sluta vid första träffen. Tror jag. Rätta mig om jag har fel.
/ Jakob