User since
2007-05-31
68
Artikel
BenutzerIn
Hallo,
kann mir jemand sagen, ob man mit Perl auch von unten nach oben eine Datei durchsuchen kann, denn ich will z.B. aus diesen Daten (siehe unten), die in einer bestimmten Datei gespeichert sind, den Text (auch Sonderzeichen, Ziffern enthalten) zwischen den letzten PASS und den FAIL!
Geht es, das ich von unten suche und einfach von FAIL bis zum ersten PASS alles rausfiltere?
12.12.06 PASS
ölaksjfdöljaf
13.12.06 PASS
asälöjaöslkf1
14.12.06 FAIL
GRUSS
User since
2005-01-13
782
Artikel
BenutzerIn
klar liess es in ein array ein und gehe von hinten nach vorne :)
my @file = <FILE>;
foreach($#file .. 0) {
#do something with $file[$_];
}
oder
my @file = reverse(<FILE>);
foreach(@file) {
#do something with $_;
}
\n\n
<!--EDIT|vayu|1180600415-->
User since
2003-08-04
12208
Artikel
Admin1
[quote=vayu,31.05.2007, 10:32]
[/quote]
nur dass das nicht geht...
foreach(reverse 0 .. $#file) {
User since
2007-05-31
68
Artikel
BenutzerIn
Hallo,
danke für die schnelle Antwort, aber irgendwie kriege ich es nicht gebacken, dieses in mein Code einzufügen?!
So sieht mein Kopfprog aus:
#~~~ Datei einlesen und TXT-Datei erzeugen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";
undef $/;
open (OUTPUT,">$ziel.txt") or die "konnte $ziel nicht oeffnen,$!\n";
$_ = <$INPUT>;
close ($INPUT);
#~~~ Ende ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nun versuche ich euren Tip zu implementieren:
@file = <$INPUT>;
foreach($#file .. 0)
{
#hier suche ich dann in der gleichen DATEI, die nun umgedreht
#wurde??????
#also z.B.
($fehler) = /(.*?)FAIL/gsm; #ODER geht das nicht so??
}
User since
2007-03-26
47
Artikel
BenutzerIn
Hallo,
wenn die Datei groß ist, bietet sich auch
File::ReadBackwards an.
Grüße,
User since
2005-01-13
782
Artikel
BenutzerIn
[quote=pq,31.05.2007, 10:41][quote=vayu,31.05.2007, 10:32]
[/quote]
nur dass das nicht geht...
foreach(reverse 0 .. $#file) {
[/quote]
upsi :0
User since
2006-11-29
340
Artikel
BenutzerIn
@yasukatakaya, du hast es noch falsch mit einbebaut.
Nachdem du die Datei geöffnet hast, musst du ihren Inhalt in ein Array einlesen und dann von hinten nach vorne durch iterieren.
Also so:
open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";
my @content = <$INPUT>;
close($INPUT);
for my$i (reverse 0..$#content) {
# mach was mit $content[$i]
# die letzte zeile kriegst du hier zuerst
}
MfG
User since
2007-05-31
68
Artikel
BenutzerIn
Hallo Leute,
irgendwie klappt es nicht, da die Datei komplett gedreht wird, d.h.
aus
1: PERL1
2: Perl2
wird
2:2lreP
1:1LREP
wie soll ich das denn in meiner Ausgabedatei lesen können??????
User since
2003-08-04
14371
Artikel
ModeratorIn
Wie sieht Dein Code aus? Wie soll dann das Ergebnis aussehen?
Ich würd wohl der Einfachheit halber ein `tac` zu Hilfe nehmen ...