Ich hab doch noch ein Problem:
Wenn ichz.B. in der datei einen Titel hab, der Lautet "Das ist ein Test" findet der script Diesen Eintrag nur, wenn ich nach "Das" suche, aber bei "Test" findet er nichts.
Der Script durchsucht praktisch nur das erste Wort vor einem Leerzeichen.
Woran liegt das, und was kann ich machen?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/perl
#
use warnings;
use strict;
use CGI;
# hier werden fehler/warnungen im browser ausgegeben; das hilft
# sehr beim entwickeln, sollte aber, sobald alles laeuft, deaktiviert
# werden, um z.B. einem Hacker moeglichst wenig Infos zu geben:
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use FindBin;
my $file = "$FindBin::Bin/lyrics.db";
my $cgi = CGI->new();
print $cgi->header();
my $sinterpret = lc( $cgi->param('interpret') );
my $stitle = lc( $cgi->param('title') );
print "Interpret::$sinterpret\n";
print "<BR>Title::$stitle<BR>\n";
unless (open (SR, "<$file")) {
die "Error: couldn't open file '$file': $!
";
}
while (my $rid = <SR>) {
my $interpret = lc(<SR>);
my $title = lc(<SR>);
my $ci = 27;
my $ct = 27;
chomp($rid); chomp($interpret); chomp($title); # zeilenenden abschneiden
if ($sinterpret ne '') {
if (index($interpret, $sinterpret) == 0) {
$ci = 1;
}
}
else {
$ci = 11;
}
if ($stitle ne '') {
if (index($title, $stitle) == 0) {
$ct = 1;
}
}
else {
$ct = 11;
}
my $a = $ci + $ct;
if ($a == 12) {
print '<br><p><a href="show.cgi?file=' . $rid . '">' . $interpret . ' - ' . $title . '</a></p>';
}
if ($a == 2) {
print '<br><p><a href="show.cgi?file=' . $rid . '">' . $interpret . ' - ' . $title . '</a></p>';
}
}
close (SR);