Schrift
[thread]9006[/thread]

Zeichensuche



<< >> 6 Einträge, 1 Seite
Silvos
 2007-05-14 15:17
#76691 #76691
User since
2007-05-12
3 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen.

Ich habe folgendes Script um immer eine Zeile einer Datei nach einem Wort zu durchsuchen.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

print "Suchbegriff: ";
$sch=<STDIN>;
open(FILE, "index")

or die "Fehler beim oeffnen der Datei!!!\n";

while(defined ($var=<FILE>))
{
if($var=~/$sch/)
{
print "true\n";
}
}

Doch es gibt nur "true" aus, wenn ich die ganze Zeile als Suchbegriff eingebe.

Wie kann man machen, dass es schon true ausgibt, wenn nur ein Wort in der Zeile dem Suchbegriff entspricht?

Danke schonmal.
Froschpopo
 2007-05-14 15:23
#76692 #76692
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
while (<FILE>) {
chomp;
print "true\n" if /$_/;
}

nicht vergessen den Newline am Ende von STDIN zu löschen mit chomp\n\n

<!--EDIT|Froschpopo|1179142289-->
Silvos
 2007-05-14 15:35
#76693 #76693
User since
2007-05-12
3 Artikel
BenutzerIn
[default_avatar]
Ich habe es jetzt mit der Option g gemacht, und jetzt gibt es nur true aus, wenn das gsuchte wort das letzt wort der Zeile ist.

edit:
Wenn ich es so
Code: (dl )
1
2
3
4
while (<FILE>) {
chomp;
print "true\n" if /$_/;
}
mache, dann gibt es immer 5 mal true aus, egal welches wort ich suche und wie viele zeilen die datei hat.\n\n

<!--EDIT|Silvos|1179142858-->
PerlProfi
 2007-05-14 16:31
#76694 #76694
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Kein g-modifier, du musst das \n am Ende von $sch entfernen, ansonsten sehe ich nicht, wieso deine 1. Lösung nicht funktionieren sollte.

Also einfach in deiner 1. Lösung aus:
Code: (dl )
$sch = <STDIN>;

folgendes machen:
Code: (dl )
1
2
$sch = <STDIN>;
chomp($sch);

Du kannst es auch so schreiben: chomp($sch = <STDIN>);

MfG

edit: my() entfernt\n\n

<!--EDIT|PerlProfi|1179146013-->
Silvos
 2007-05-14 16:50
#76695 #76695
User since
2007-05-12
3 Artikel
BenutzerIn
[default_avatar]
Vielen Dank, es geht jetzt.
pq
 2007-05-14 17:07
#76696 #76696
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,14.05.2007, 13:23]
Code: (dl )
1
2
3
4
while (<FILE>) {
  chomp;
  print "true\n" if /$_/;
}
[/quote]
was soll das denn? willst du überprüfen, ob die zeile auf sich selbst matcht?\n\n

<!--EDIT|pq|1179148060-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 6 Einträge, 1 Seite



View all threads created 2007-05-14 15:17.