迪拉斯: Suchen und ersetzen in Datei: Speicherzugriffsfehler

Beitrag lesen

Hey,
den Speicherzugriffsfehler erhältst du, weil du tatsächlich alles in ein $_ einzulesen versuchst. Siehe http://perldoc.perl.org/perlrun.html#*-p*--p, das -p wird zu einem while mit <> expandiert. Bekanntlich ist <> nur die Kurzform für $_ = readline(*STDIN);.

Schau dir mal den Schalter -0 an. Gib ihm den oktalen Wert für ), nämlich 051. Jetzt wird ) als Zeilenende interpretiert. Wenn dann am Zeilenanfang ; und Leerzeichen steht, ersetze es mit ; und \n.

perl -0051 -pe's/^; /;\n/' dummy

Diese Lösung über chunkweises Einlesen wird nochmals schneller sein als die vorher gepostete über zeichenweises Einlesen.

--
水-金-地-火-木-土-天-海-冥