my $tempfile="/tmp/$$.tmp"; open(DBA, "+< $datafile") or die "Could not read $datafile: $!"; flock(DBA, 2); seek(DBA, 0, 0); open(TMPA, "+> $tempfile") or die "Could not open tempfile: $!"; flock(TMPA, 2) or die "ERROR: $!"; # it dies here? seek(TMPA, 0, 0); while(){ # more code here, etc etc ...