Thread Dateien nach String durchsuchen (3 answers)
Opened by Monk at 2008-06-05 02:03

Gast Gast
 2008-06-05 07:48
#110745 #110745
Code (perl): (dl )
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
#!/usr/bin/perl
## bitte immer strict und warnings nutzen:
use strict;
use warnings;

## wenn man "strict" nutzt,
## muß man alle Variablen mit "my" initialisiern
my $suche = "nummer2";

##das ist falsch: 
# @list = "";
## so muß man das schreiben
# my @list = ();
## oder einfach
my @list;

foreach my $file (glob("*.txt"))
{
  ## bitte "|| die" nicht nur "||" das funktioniert nicht!
  ## beim öffnen kann man auch ausgeben lassen,
  ## was genau falsch gelaufen ist.
  ## bitte das das "open" mit den drei Werten nutzen 
  open(READ,'<',$file) || die "Fehler beim oeffnen ($!)";
  push (@list,<READ>);
  close(READ);
}

## $count soll doch eine Zahl sein oder?
## perl ändert das zwar automatisch,
## aber schön ist das nicht.
#$count = "";
my $count=0;

## nicht @list nicht in Anfühungszeichen!!!
## sonst fügst du die Einträge der Liste als String zusammen! 
foreach my $movie (@list)
{
  $count++;
  if ($movie =~/$suche/i)
  { 
    ## die Ausgabe ist etwas umständlich
    ## und zudem noch falch.
    ## auf ein Array greift man mit $list[$count] zu
    # print "Gefunden : ","@list[$count]";
    ## die Zeile steht doch schon in $movie.
    ## zudem ist die Ausgabe immer,
    ## da der erste Eintrag in der liste in $liste[0]
    ## $count hats du aber schon um eins erhöt,
    ## und ist für die erste Zeile 1 nicht 0 wie es richtig wäre.
    ## daher dein Probleme.
    ## allso entweder:
    # print "Gefunden : $liste[$count]\n";
    ## oder
    print "Gefunden: $movie\n";
  }
  else
  {
    ## Ist dir nie aufgefallen das die Ausgabe ohne newlines war?
    ## und das es insgesammt nie drei Ausgaben waren?
    print "Nix gefunden\n";
  }
}

View full thread Dateien nach String durchsuchen