Marcus Vieß: Suchen in txt Datei

use strict;
$searchdata='/is/htdocs/www.bla.de/searchdata.txt';
print 'Welche Datei wollen Sie durchsuchen : ';
chomp (my $searchdata=<>);

open (FH, "<$searchdata");

while(my $search = <FH>){        #Zeilenweise einlesen
  if ($search =~ m/Blade/g) {   #Suchen nach dem Wort: und
  print $. , '.Zeile: 'Blade' gefunden\n';
  }
}
  close(FH);

Ich möchte das Wort Blade in der TXT finden und die ganze Zeile in der es steht ausgeben. Aber irgendwie klappert das nicht ...

Also Quasi nach *blade* suchen, Groß- Kleinschreibung soll egal sein, um noch mehr treffer zu bekommen ...

  1. Hallo Marcus,

    while(my $search = <FH>)
    {
        chomp($search);
        if($search =~ /blade/i)
        {
            # Gefunden!
        }
    }

    das chomp nimmt den \n oder \r\n raus.

    Gruß

    Eidgenosse

  2. use Mosche;

    use strict;
    $searchdata='/is/htdocs/www.bla.de/searchdata.txt';

    my $searchdata = ...

    print 'Welche Datei wollen Sie durchsuchen : ';
    chomp (my $searchdata=<>);

    print $searchdata;

    Ist $searchdata leer? Fehlermeldung, weil du eine lexikal zu deklarierende Variable (s.o.) nochmals deklarierst?

    open (FH, "<$searchdata");

    while(my $search = <FH>){        #Zeilenweise einlesen
      if ($search =~ m/Blade/g) {   #Suchen nach dem Wort: und

    $search =~ m/blade/i

    Ansonsten bitte den echten Quelltext + Fehlermeldung.

    use Tschoe qw(Matti);

    --

      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
  3. wenn du die ganze datei durchsuchen willst würde ich zuerst das machen:

    {
     local $/ = undef; # der zeilen trenner wird in diesem block auf undef gesetzt

    $search = <FH>;
     if ($search =~ /blade/i ) { print "found }; # i matcht ignore case
    }

    Die datei sollte dann natürlich nicht endlos gross sein. da er sie sich jetzt in einem rutsch reinsaugt.

    wenn du keinen block benutzen willst musst du $/ vorher sichern
    my $safe = $/;
    $/ = undef;
    ... blub...
    $/ = $save;