Klaus Mock: Zeilen löschen ----

Beitrag lesen

Hallo,

my $filename;

foreach $filename (@array)

ist sicherer

{

if (($_ =~ /.txt$/)&& (300000 < (-s "$_")))

wenn dann
   (-s "$dir/$_")

Da $_ nur den Dateinamen, ohne Pfad beinhaltet.

Aber nun
if (($filename =~ /.txt$/)&& (300000 < (-s "$dir/$filename")))

{
  my @dummy;
  open (DATEI, "$_") || die "Kann Datei nicht oeffnen $!";

Auch hier
     open (DATEI, "$dir/$filename") || die "Kann Datei nicht oeffnen $!";

Den Rest spare ich mir, und schreibe:
      seek(DATEI,-300000,2); # springe vom Dateiende 300000 Bytes vor
      <DATEI>; # die halbe Zeile vergessen wir, wenn DU willst
      @dummy = <DATEI>;
      close (DATEI);
      open (DATEI, ">$dir/$filename") || die "Kann Datei nicht schreiben $!";
      print DATEI @dummy;
      close(DATEI);
      }
   }
Ich würde zwar noch mit zwei Dateihandles (IN,OUT) arbeiten, dadurch könnte ich mir @dummy sparen, aber das ist schon ein bißchen Geschmacksfrage.

Grüße
  Klaus