Perl: Datei einlesen

Post Reply
Message
Author
jakob
Posts: 6
Joined: 31. May 2002 9:44

Perl: Datei einlesen

#1 Post by jakob »

Hallo zusmmen,

ich wollte von Perl eine Datei einlesen lassen,
und diese dann nach bestimmten Worten duchsuchen
lassen.

---

#!/usr/bin/perl
$suche = system("cat warn");

---

Doch der gibt mir schon beim Einlesen den kompletten
Inhalt der Datei aus.

Wie bekomm ich den Dateiinhalt nach $suche, damit
ich in der $suche dann auch wirklich suchen kann?

Gruss,

Jakob

Descartes

Re: Perl: Datei einlesen

#2 Post by Descartes »

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

open(DATEI, "< warn");
my @datei=<DATEI>;
close(DATEI);

foreach my $zeile (@datei) {
print $zeile;
}
</font><hr></pre></blockquote>

Descartes

Re: Perl: Datei einlesen

#3 Post by Descartes »

Die folgende Lösung demonstriert wie man eine Pipe benutzt um Daten einzulesen. Nützlich für Programme deren Output man parsen möchte:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

open(DATEI, "cat warn |");

foreach my $zeile (<DATEI>) {
print $zeile;
}

close(DATEI);
</font><hr></pre></blockquote>

Jakob

Re: Perl: Datei einlesen

#4 Post by Jakob »

Hallo Descartes,

danke fuer dein Script. Ich habs jetzt noch etwas
modifiziert:

---

#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

open(DATEI, "< warn");
my @datei=<DATEI>;
close(DATEI);

foreach my $zeile (@datei) {
print "GEFUNDEN
" if $zeile =~ m/error/;
}

---

Ausgabe:

---

kirk@kirk:~/perl> ./kirk
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN
GEFUNDEN

---

Wie schaffe ich es jetzt, dass der mir auch noch diejenige
Zeile der Datei dazu ausgibt?

Ist es auch moeglich, dass ich das Script als Cronjob laufen
lasse und mir ne Mail bei jedem neuen error-Eintrag in der
Datei schicken lasse?

Gruss,

Jakob

Descartes

Re: Perl: Datei einlesen

#5 Post by Descartes »

> Wie schaffe ich es jetzt, dass der mir auch noch diejenige Zeile der Datei dazu ausgibt?

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

open(DATEI, "< warn");
my @datei=<DATEI>;
close(DATEI);

foreach my $zeile (@datei) {
printf("GEFUNDEN: $zeile \<!--no-->n") if $zeile =~ m/print/;
}
</font><hr></pre></blockquote>

> Ist es auch moeglich, dass ich das Script als Cronjob laufen lasse und mir ne Mail
> bei jedem neuen error-Eintrag in der Datei schicken lasse?
Wenn du das Script entsprechend (und korrekt) programmierst ist vieles möglich. Unter anderem auch das von dir genannte. Du solltest dich mal nach geeigneter Perl Literatur umsehen bevor du das in Angriff nimmst. Das oben angegebene Perl Script ist in jedem Perl Buch bereits auf einer der ersten Seiten beschrieben (Datei öffnen und in Array einlesen und mit foreach über das Array iterieren).

Jakob

Re: Perl: Datei einlesen

#6 Post by Jakob »

Hi Descartes,

danke fuer das Script. Ich hab ein Perlbuch:

Perl Enfuehrung, Anwendung, Refernez - Farid Hajji

Scheint ganz gut zu sein, geht fuer einen Anfaenger aber zu tief rein.
Ich will ja zuerst mal einige kl Erfolge sehen.

Gruss,

Jakob

Descartes

Re: Perl: Datei einlesen

#7 Post by Descartes »

Schau dir mal an:

Einführung in Perl
<a href="http://www.oreilly.de/catalog/einperl3ger/" target="_blank"><!--auto-->http://www.oreilly.de/catalog/einperl3g ... <!--auto-->
Buchbesprechung: <a href="http://www.pl-berichte.de/berichte/einperl.html" target="_blank"><!--auto-->http://www.pl-berichte.de/berichte/einp ... <!--auto-->

Programmieren mit Perl
<a href="http://www.oreilly.de/catalog/pperl3ger/" target="_blank"><!--auto-->http://www.oreilly.de/catalog/pperl3ger/</a><!--auto-->

Jakob

Re: Perl: Datei einlesen

#8 Post by Jakob »

Hallo Descartes,

danke fuer die Buchtipps. Wahrscheinlich werd ich mir die O Reilly-Einfuehrung kaufen.

Noch ne Bitte: Kann ich dich vielleicht per Mail erreichen, wenn ich Perlfragen hab?

Gruss,

Jakob

Post Reply