Dies ist eine Windows/MS-DOS-Beschränkung. Laut perldiag :
Sie arbeiten mit einem System wie MS-DOS, das verwirrt wird, wenn Sie versuchen, aus einer gelöschten (aber noch geöffneten) Datei zu lesen. Sie müssen -i.bak oder ähnliches sagen.
Perls -i
Implementierung bewirkt, dass es die file1.txt
unter Beibehaltung eines offenen Handles, und erstellen Sie dann die Datei mit demselben Namen neu. Auf diese Weise können Sie Datei1.txt "lesen", obwohl sie gelöscht wurde und neu erstellt wird. Leider ist es unter Windows/MS-DOS nicht möglich, eine Datei mit einem offenen Handle zu löschen, so dass dieser Mechanismus nicht funktioniert.
Ihre beste Chance ist die Verwendung von -i.bak
und löschen Sie dann die Sicherungsdatei. Dies bietet Ihnen zumindest einen gewissen Schutz - Sie könnten sich zum Beispiel dafür entscheiden, die Sicherung nicht zu löschen, wenn perl
wird mit einem Exit-Code ungleich Null beendet. Etwa so:
perl -i.bak -ape "splice...." file1.txt && del file1.bak