Leser: 32
open ... or die "Could not open: $!";
Guest TobiHallo liebe Perl Community,
ich würde gerne mit Perl den Inhalt einer .doc Datei auslesen und in eine .txt Datei schreiben weiß aber nicht so ganz wie ich anfangen soll.
Hat jemand zufällig Ideen bzw. gute Ansätze?
Vielen Dank schonmal im vorraus!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Oeffne Datei zum lesen open my $fh, '<', $txt_datei or die "Cannot open $txt_datei: $!"; # lese jede Zeile ein und entferne "AB" while ( my $line = <$fh> ) { $line =~ s/AB//g; # gib den veränderten String auf der Konsole aus # wenn das in eine Datei geschrieben werden soll, # muss man das hier ändern print $line; } # schliesse den Dateihandle close $fh;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# Oeffne Datei zum lesen open my $fh, '<', $txt_datei or die "Cannot open $txt_datei: $!"; # lese jede Zeile while ( my $line = <$fh> ) { # wenn es die erste Zeile ist if ( $. == 1 ) { # fuege ein "#" an Stelle vier ein substr $line, 3, 0, '#'; print $line; } } # schliesse den Dateihandle close $fh;
Guest TobiHätte aber noch eine andere Frage..
Die Lösung fürs ersetzen (also $line =~ a/AB//g;) gilt ja nur für eine Kombination die gelöscht wird. Wie muss ich das erweitern um mehrere zu ersetzen? Also wenn ich "AB", aber auch "CD" löschen will?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#!/usr/bin/perl use warnings; use strict; my $txt_datei_in = ""; my $txt_datei_out = ""; # Oeffne Datei zum lesen open my $fhIn, '<', $txt_datei_in or die "Cannot open $txt_datei_in: $!"; # Oeffne Datei zum schreiben open my $fhOut, '>', $txt_datei_out or die "Cannot open $txt_datei_out: $!"; # lese jede Zeile ein und entferne "AB" while ( my $line = <$fhIn> ) { $line =~ s/AB|CD//g; # AB oder CD # gib den veränderten String auf der Konsole aus # wenn das in eine Datei geschrieben werden soll, # muss man das hier ändern print $fhOut $line; } # schliesse den Dateihandle + auch immer auf mögliche Fehler abfragen!!! close $fhIn or die $!; close $fhOut or die $!;
Quote$line =~ s/AB|CD//g; # AB oder CD
Guest TobiOkay... eine letzte Sache noch:
Quote$line =~ s/AB|CD//g; # AB oder CD
Wie würde das aussehen wenn ich alles außer AB und CD löschen möchte?
$line =~ s/[^AB|CD]//g;
2010-04-21T11:44:43 reneeNein, damit würde alles außer A,B,C,D und | gelöscht - egal in welcher Reihenfolge/Kombination.
Guest TobiQuote$line =~ s/AB|CD//g; # AB oder CD
Wie würde das aussehen wenn ich alles außer AB und CD löschen möchte?
print $fhOut $line unless( ...bedingung... );
1 2 3
open my $fh, "<", $path or die "Could not open: $!"; my @inhalt = <$fh>; close $fh;
1
2
3
open my $fh, '<', 'C:/text.txt' or die "C:/text.txt: $!\n";
@inhalt = <$fh>;
close $fh;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#!/usr/bin/perl use strict; use warnings; open my $fh, "<", $path or die "Could not open: $!"; my @inhalt = <$fh>; close $fh; # gehe das Array rückwärts durch und lösche alle Zeilen die eine Bedingung aufweisen. for my $nr (reverse(0..$#inhalt)) { my $zeile=$inhalt[$nr]; splice(@inhalt,$nr,1) if($zeile=~/<Ausschusskriterium>/); } # mach was mit den übrig gebliebenen Zeilen ...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/usr/bin/perl use strict; use warnings; open my $fh, "<", $path or die "Could not open: $!"; my @inhalt = <$fh>; close $fh; my @inhalt_bearbeitet; while(@inhalt) { my $zeile=shift @inhalt; push(@inhalt_bearbeiet,$zeile) if($zeile!~/<Ausschusskriterium>/); } # mach was mit @inhalt_bearbeitet # @inhalt ist leer ...