perl-probleme


C

canfAN

also es geht darum, dass ich eine textdatei öffnen will und den inhalt in ein array schreiben will.

open(FILE, $file);
@array = <FILE>;
close (FILE);

nun habe ich jede zeile der textdatei an einem platz des arrays.
wenn die textdatei z.b. so aussieht:

dies ist
eine textdatei

ist $array[0] dies ist.

bei textdateien im unixformat allerdings, sieht die textdatei anders aus. statt einem zeilenumbruch sieht man unter windows nur ein viereck und die ganze datei ist in einer zeile.

wie kann ich mit split diese zeile an den zeilenumbrüchen aufteilen ??

@lala = split(/\n/, $array[0]); geht nicht.

achja und dann hab ich noch ein problem.
ich will aus einer textdatei alle html-tags löschen (alles zwischen den <>'s)

mit $var =~ s/<.+>//; geht es nicht und mit
if ($var =~ /<.+>/) {
$var =~ s/$&//;
}
auch nicht.


wär toll wenn mir da jemand helfen könnte
thx!
 

Arne Buchwald

Erfahrenes Mitglied
Hallo,

zum Löschen von "<" und ">":

Nimm die Befehle index und rindex, die liefern dir einmal die Anfangsposition und die Endposition. Den Rest müsstest du selbst hinbekommen.

Zu den Viereckigen-Kästen:

Hmm ... ? Unter Windows ist das #13#10, aber, ich glaube, das hilft dir leider auch nicht viel weiter.
 

barney

Mitglied
perl problem

hi canfAN,
ich glaube ich hab eine lösung für dein erstes problem
glaub ich halt (bin kein perl profi)
aber nimm doch

chomp $array[0]

das löscht den Zeilenumbruch
hoffe es klappt

mfg barney
 

lexi

Gesperrt
wenn ich unix-formatierte textdoks mit perl auslese gibts eigentlich nie probleme, die quader werden als zeilenumbruch angesehen..
 
M

Mandikor

Hallo Leute.

@ canfAN

Um HTML Tags zu entfernen, kannst du folgendes Konstrukt benutzen:

Code:
$htmltext =~ s/<([^>]|\s)*>//g;
Dies entfernt alles zwischen zwei spitzen Klammern. Dabei werden auch Zeilenenden beachtet. Aber dieser reguläre Ausdruck ist nicht perfekt und wird nicht 100%ig zum Erfolg führen. Es gibt immer wieder mal Sonderfälle, wo zwar der reguläre Ausdruck funktioniert aber das Ergebnis nicht dem gewünschten Entspricht. Zum Beispiel seien hier HTML Tags in HTML Kommentaren genannt.

Code:
<!-- Dieser Text soll durch <b> fett dargestellt werden-->
Hier würde nur dieser Teil entfernt

Code:
!-- Dieser Text soll durch <b
werden, aber dieser Teil würde stehen bleiben.

Code:
> fett dargestellt werden-->
Aber im Großen und Ganzen solltest du mit dem regulären Ausdruck fast alle HTML Tags entfernen können.

Zu deinem ersten Problem noch. barney hat das schon richtig genannt, ich möchte nur mal eine kürzere Fassung zeigen.

Code:
open(FILE, $file);
    chomp (@array) = <FILE>;
close (FILE);
 

Neue Beiträge