#!/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,); 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"; } }