#!/usr/bin/perl use warnings; use strict; use diagnostics; use Fcntl qw(:DEFAULT :flock SEEK_SET SEEK_CUR); sub systell { sysseek($_[0], 0, SEEK_CUR) } sysopen FH, "datei.txt", O_RDWR or die "Kann Datei nicht öffnen: $!\n"; flock FH, LOCK_EX or die "Kann Datei nicht sperren: $!\n"; my $pos = 0; my ($feld1, $feld2, $feld3) = ""; while () { chomp; ($feld1, $feld2, $feld3) = split /\xA1/; if ($feld1 eq "EEEEE") { sysseek FH, $pos, SEEK_SET; # möchte aktuelle Zeile überschreiben print FH "E-E-E¡eeeeeeeeee¡eee\n"; # geänderte Zeile }; $pos = main::systell FH; # ich möchte den Zeilenanfang treffen } close FH;