Zeilenumbrüche in komplettem Array ersetzen
Thorsten Steffen
- perl
Hi,
ich habe mit folgendem Script eine Datei eingelesen:
open(DATEI,"<karte.txt")die"karte.txt nicht gefunden\n";
@zeilen=("");
while(<DATEI>)
{
push(@zeilen,$_);
}
close (DATEI);
Allerdings befindet sich danach am Ende jeder Zeile des Arrays ein Zeilenumbruch. Da ich mit regulären Ausdrücken nach bestimmten Tabelleninhalten suche, stört dies mich aber. Wie kann ich diese Zeilenumbrüche löschen ?
Gruß
Thorsten
Hallo Thorsten,
while(<DATEI>)
{
push(@zeilen,$_);
}
close (DATEI);
»»
Allerdings befindet sich danach am Ende jeder Zeile des Arrays ein Zeilenumbruch. Da ich mit regulären Ausdrücken nach bestimmten Tabelleninhalten suche, stört dies mich aber. Wie kann ich diese Zeilenumbrüche löschen ?
Mit einer kleinen Ergänzung im Einlesebereich:
chomp() (ab Perl5) entfernt das als $INPUT_RECORD_SEPARATOR bzw. $/ eingestellt Zeichen (Zeichenkette?) vom Ende des Strings. Die Voreinstellung ist Newline.
Gruß AlexBausW
Hab einfach
chomp(@zeilen);
nach dem Schliessen der Datei angegeben, ist doch richtig so, oder ?
Funktioniert zumindest.
Gruß und Danke
Thorsten
Hallo Thorsten,
while(<DATEI>)
{
push(@zeilen,$_);
}
close (DATEI);
»»
Allerdings befindet sich danach am Ende jeder Zeile des Arrays ein Zeilenumbruch. Da ich mit regulären Ausdrücken nach bestimmten Tabelleninhalten suche, stört dies mich aber. Wie kann ich diese Zeilenumbrüche löschen ?Mit einer kleinen Ergänzung im Einlesebereich:
chomp() (ab Perl5) entfernt das als $INPUT_RECORD_SEPARATOR bzw. $/ eingestellt Zeichen (Zeichenkette?) vom Ende des Strings. Die Voreinstellung ist Newline.
Gruß AlexBausW
Hi!
open(DATEI,"<karte.txt")die"karte.txt nicht gefunden\n";
@zeilen = <DATEI>;
close (DATEI);
chomp(@zeilen);
So long
P.S. Willst Du wirklich den leeren String als erstes Element der Liste? Dann musst Du am Ende noch
unshift(@zeilen, "");
machen.
Hä ??
Wie meinst Du das, welchen leeren String ?
Ich möchte einfach die ganzen Zeilenumbrüche am Ende der Tabellenzeilen (Array) rausschmeißen.
Thorsten
P.S. Willst Du wirklich den leeren String als erstes Element der Liste? Dann musst Du am Ende noch
unshift(@zeilen, "");
machen.
Hä ??
Wie meinst Du das, welchen leeren String ?
Ich möchte einfach die ganzen Zeilenumbrüche am Ende der Tabellenzeilen (Array) rausschmeißen.
Du hattest in Deiner urspruenglichen Version am Anfang die Zeile
@zeilen=("");
Damit hat das Array @zeilen genau 1 Element, naemlich einen leeren String. Die Zeilen aus der Datei hast Du dann an das Array angehaengt. Und deshalb hast Du eben einen leeren String als erstes Element in der Liste. Aber scheinbar war das ja unbeabsichtigt, deshalb kannst Du das mit dem unshift() ruhig erstmal vergessen.
So long
Sorry,
wollte nur das array initialisieren, wie mache ich das denn am besten ?
Gruß
Thorsten
Hä ??
Wie meinst Du das, welchen leeren String ?
Ich möchte einfach die ganzen Zeilenumbrüche am Ende der Tabellenzeilen (Array) rausschmeißen.Du hattest in Deiner urspruenglichen Version am Anfang die Zeile
@zeilen=("");
Damit hat das Array @zeilen genau 1 Element, naemlich einen leeren String. Die Zeilen aus der Datei hast Du dann an das Array angehaengt. Und deshalb hast Du eben einen leeren String als erstes Element in der Liste. Aber scheinbar war das ja unbeabsichtigt, deshalb kannst Du das mit dem unshift() ruhig erstmal vergessen.So long
Sorry,
wollte nur das array initialisieren, wie mache ich das denn am besten ?
@zeilen = ();
Also *nichts* in die Klammern. Dann hast Du ein leeres Array. So einfach ist das. ;-)
So long