Du kannst nie in einer Datei gleichzeitig lesen und schreiben. ALso immer erst open(DAT,"<xxx"); und Close(DAT); und dann erst open(DAT">xxx"); und close(DAT);.
Hast Du schon mal "perldoc -f open" gelesen?
Zitat: "You can put a '+' in front of the '>' or '<' to indicate that
you want both read and write access to the file;"
Soweit ich Deinen Versuch verstanden habe, speicherst Du das gesamte File in eine Variable, um sie dann wieder in eine Datei zu schreiben. Du kannst aber das alte und das neue File gleichzeitig öffnen, zeilenweise von old nach new schreiben(geht recht einfach in einer Schleife), alle beide schließen, und dann mit rename("new","old") die neue Datei mit dem alten Name belegen. Damit ist wieder nur der alte Name zu finden, der Inhalt aber ausgetauscht.
Das geht genau dann schief, wenn zwei Prozesse gleichzeitig eine Datei aendern wollen.
Besser oben genannte Methode benutzen und das File locken.
Viele Gruesse,
Daniel Bradler