Datei einlesen und Zeileumbruch entfernen
Glen
- perl
0 Siechfred0 Glen0 Christian Kruse0 Glen0 Christian Kruse0 Glen
0 Struppi
0 Tante Olga
Hi,
ich möchte eine HTML-Datei einlesen und dabei alle Zeilenumbrüche durch einen Tabulator oder auch # ersetzen. Also die alle Zeilen in eine einzige Zeile schreiben.
Wie könnte ich das am besten realisieren.
Besten Dank schonmal.
Gruß
Glen
Hallo Glen.
ich möchte eine HTML-Datei einlesen und dabei alle Zeilenumbrüche durch einen Tabulator oder auch # ersetzen. Also die alle Zeilen in eine einzige Zeile schreiben.
Entweder du entfernst die Zeilenumbrüche aus allen Zeilen mit chomp:
http://de.selfhtml.org/cgiperl/funktionen/zeichenketten.htm#chomp
und fügst sie danach mit join zusammen:
http://de.selfhtml.org/cgiperl/funktionen/listenhashes.htm#join
oder du machst es mit Hilfe Regulärer Ausdrücke:
http://de.selfhtml.org/cgiperl/sprache/regexpr.htm#suchen_ersetzen
Freundschaft!
Siechfred
Hi,
ich hab meinen Code jetzt mal so geändert. Funzt leider noch nicht so ganz. Was mache ich denn noch falsch?
Gruß
Glen
#!/usr/local/bin/perl
use strict;
my $datei_dir ="/data/daten/ib_test";
my $dateineu_dir ="/data/daten/ib_test/Dateien_neu";
opendir(DIR, $datei_dir) or die "Fehler bei opendir: $!\n";
while(my $datei=readdir(DIR))
{
print "$datei\n";
if($datei=~m/.+.html*$/)
{
open(DATEI, "<$datei_dir/$datei") || die "Fehler bei open(< $datei): $!\n";
my @zeile =<DATEI>;
close(DATEI);
# Manipulieren
my $datei = join @zeile
$datei =~ s/\n/\t/g;
# Schreiben
open(DATEI,">$datei") || die $! "chmod vergessen?";
print DATEI "$datei";
close(DATEI);
}
close(DIR);
Hallo Glen,
Tausche den Inhalt der inneren Schleife durch das folgende aus:
local $/;
open DATEI, '<',"$datei_dir/$datei" or die "Fehler bei open(< $datei): $!\n";
my $datei = <DATEI>
close DATEI;
$datei =~ s/\015\012|\015|\012/\t/g;
open DATEI,'>',"$datei_dir/$datei" or die "$datei: $!";
print DATEI $datei;
close DATEI;
So sollte es gehen.
Grüße,
CK
Hallo Christian,
jetzt sieht mein Code so aus. Etwas stimmt aber leider immer noch nicht. Was mache ich denn jetzt noch falsch?
Gruß
Glen
#!/usr/local/bin/perl
use strict;
my $datei_dir ="/data/daten/ib_test";
my $dateineu_dir ="/data/daten/ib_test/Dateien_neu";
opendir(DIR, $datei_dir) or die "Fehler bei opendir: $!\n";
while(my $datei=readdir(DIR))
{
print "$datei\n";
if($datei=~m/.+.html*$/)
{
local $/;
open DATEI, '<',"$datei_dir/$datei" or die "Fehler bei open(< $datei): $!\n";
my $datei = <DATEI>
close DATEI;
$datei =~ s/\015\012|\015|\012/\t/g;
open DATEI,'>',"$datei_dir/$datei" or die "$datei: $!";
print DATEI $datei;
close DATEI;
}
}
close(DIR);
Hallo Glen,
jetzt sieht mein Code so aus. Etwas stimmt aber leider immer noch
nicht. Was mache ich denn jetzt noch falsch?
Was sind denn die Meldungen?
Wahrscheinlich meinst du auch $dateineu_dir beim zweiten, schreibenden
oeffnen der Datei.
Grüße,
CK
Hallo,
jetzt hab ich's dann doch noch mit Eurer Hilfe geschaft :)
Vielen Dank nochmal!
Gruß
Glen
if($datei=~m/.+.html*$/)
{
local $/;
open DATEI, '<',"$datei_dir/$datei" or die "Fehler bei open(< $datei): $!\n";
my $datei = <DATEI>
close DATEI;$datei =~ s/\015\012|\015|\012/\t/g;
open DATEI,'>',"$datei_dir/$datei" or die "$datei: $!";
print DATEI $datei;
close DATEI;
Naja, hier sind ein paar viele "$datei"s vorhanden.
Struppi.
#!/usr/bin/perl -wT
use CGI::Carp qw(fatalsToBrowser);
use strict ;
my $file = 'home/deinedomain/html/';
#pfad zum file eingeben, file muss chmod 666 kürzfristig gesetzt werden
open(FILE,"$file") or die $! "pfad ok?";
my @main = <FILE>;
close(FILE);
my $chunk = join @main;
$chunk =~ s/<(br|BR)>/\t/g;
open(FILE,">$file") or die $! "chmod vergessen?";
print FILE $chunk;
close(FILE);
print "Content-type: text/html\n\n";
print "<html><body>";
print "<p>Tante Olga war da !<br> damit keine ir(r ?)itierende "premature end of script header" message erscheint</p>";
print "</body></html>";
exit ;