cat -E test1.txt
Ausgang:Perl-Datei verarbeitet - überschreibt vorhandene Daten statt Anhängen/Löschen
car$
$
$
Ich mag ändern „Auto“ nur mit „Fahrrad“ und neue/leere Zeilen entfernen.
Dies funktioniert wie erwartet:
#!/usr/bin/perl -w
open(FILE1,"<","./test1.txt"); @araj=<FILE1>; close(FILE1);
open(FILE2,">","./test1.txt");
map {
[email protected]@[email protected]; [email protected]^\[email protected]@;
} @araj;
print(FILE2 @araj);
close(FILE2);
und
cat -E test1.txt
Ausgang ist 100% richtig für mich:
bike$
Aber in obigen Fall bin ich mit 2x Öffnen/Datei schließen. Also ich benutze 2x Dateigriffe.
Ich möchte nur verwenden 1x Datei-Handle
(es ist für Lernzwecke, nur versuchen zu verstehen, wie +> + >> >> funktionieren ...).
Zum Beispiel:
#!/usr/bin/perl -w
open(FILE2,"+<","./test1.txt"); #what file handle should be here? +> , +>> >> .... ?
@araj=<FILE2>;
map {
[email protected]@[email protected]; [email protected]^\[email protected]@;
} @araj;
print(FILE2 @araj);
close(FILE2);
Ausgang ist falsch:
car$
$
$
bike$
Warum dies anhängt, aber kein Überschreiben? Wenn ich andere Dateizugriffsnummern verwendete, sind auch die Ergebnisse falsch, z. B. leere Datei ... Welche Dateikennung wird zum Lesen und Überschreiben verwendet?
https://perldoc.perl.org/functions/seek.html –
@ikegami dank Datei. Korrigiert. – collector1871