003
11.03.2009, 10:11 Uhr
Dirk1980
|
Hallo,
vielen Dank für Eure Antworten. Gerade der Tipp von zur Sicherheit der Daten ist sehr wertvoll. In Zukunft werde ich dies bei meinen Skripts beachten.
Hier nun das neue Skript, welches nun sicher sein sollte:
Perl: |
#!/usr/bin/perl use strict; use warnings;
use File::Find; use File::Copy;
my $dir = "X:/Results"; my $no_files = 0; my $no_txt_files = 0; my $no_dirs = 0; my @file_lines; my $line;
find(\&edits, $dir);
print "\n\n"; print "Anzahl Verzeichnisse: $no_dirs " . "\n"; print "Anzahl Dateien: $no_files " . "\n"; print "Anzahl txt-Dateien: $no_txt_files " . "\n";
sub edits() { my $file_name = $_; if( -f $file_name ) { $no_files += 1;
if( $file_name =~ m/\.txt$/ ) { $no_txt_files += 1; # read input file (e.g. foo.txt) open(IN_FILE, "<", $file_name); @file_lines = <IN_FILE>; close(IN_FILE); # write to output file (e.g. foo.txt.new) open(OUT_FILE, ">", $file_name . ".new"); foreach $line (@file_lines) { chomp $line; # if line is not empty if( $line !~ m/^\s*$/ ) { print OUT_FILE $line . "\n"; } } close(OUT_FILE); # move input data to backup file (e.g. foo.txt --> foo.txt~) move($file_name, $file_name . "~"); # move output data to file which shall be modified (e.g. foo.txt.new --> foo.txt) move($file_name . ".new", $file_name) } } }
|
Ich habe gerade auch gesehen, dass die letzte Zeile jeder Datei eine Leerzeile ist. Mir ist klar, warum das so ist. Die letzte Zeile, die ich in die Datei schreibe hat am Ende das "\n". Und dadurch wird eine neue Zeile angelegt.
Wie ist hier die Konvention? Sollte die letzte Zeile einer Textdatei leer sein? Oder ist das völlig egal?
Gruß Dirk |