Thread Dateien auslesen, nach Wort suchen und neu abspeichern funktioniert nicht ganz...
(3 answers)
Opened by New at 2013-07-25 09:14 2013-07-25T07:14:08 New Hi, Wenn Du nur zwei Listen von Dateinamen speichern willst, kannst Du das übersichtlicher lösen (ungetestet!): Code (perl): (dl
)
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 27 28 29 30 31 32 33 34 #!/usr/bin/perl use warnings; use strict; open( my $subcktFh, '>', 'SUBCKT.TXT' ) or die $!; open( my $modelFh, '>', 'MODEL.TXT' ) or die $!; # Alle *.txt-Dateinamen im aktuellen Verzeichnis my @txtfiles = glob( "*.txt" ); # Iteriere durch die Dateinamen (in sortierter Folge) for my $file ( sort @txtfiles ) { open( my $fh, '<', $file ) or next; # bei Fehler weitermachen # ganze Datei in Skalar einlesen, dafür $INPUT_RECORD_SEPARATOR auf undef # d.h. ganze Datei ist eine "Zeile", $content-Variable außerhalb des Blocks deklarieren; my $content; { local $/; $content = <$fh>; close $fh; } # '.SUBCKT' am Dateianfang (\A) oder nach Newline (\n)? # m{...}x: Whitespace im Suchmuster ignorieren if ( $content =~ m{ (\A|\n) \.SUBCKT \b }ix ) { print $subcktFh "$file\n"; } else { print $modelFh "$file\n"; } } close $subcktFh; close $modelFh; Wenn Du jeweils den ganzen Dateiinhalt anhängen willst, musst Du statt print $subcktFh "$file\n"; halt print $subcktFh "$content"; schreiben Gruß FIFO (Nachtrag) Lesestoff: perlvar (suche $INPUT_RECORD_SEPARATOR), WasIsteinLexikalischerFileHandle Editiert von FIFO: Kommentare ergänzt, $/-Scope minimiert Editiert von FIFO: scope von $content korrigiert. Last edited: 2013-07-25 23:30:47 +0200 (CEST) Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|