CPAN: am Textende LF anfügen

Beitrag lesen

Fein mitgedacht; "\n" in einer Regex ist in der Vielzahl der Anwendungsfälle zu schwammig. Die Fallen werden in PBP Kapitel 12 erläutert. Es wird empfohlen, immer die Flags /m, /s und /x zu setzen.

Die spezifische Aufgabe des OP strikt-interpretiere ich so: logisches Newline anhängen, wenn kein physisches Linefeed am Ende vorhanden.

  
require 5.006;  
use charnames qw(:full);  
$text .= "\n" unless $text =~ /\N{LF} \z/msx;  

Besser aber, man matcht der Symmetrie halber auch auf logisches Newline. Die Lösung ist verblüffend einfach, wenn man weiß, wie es geht. Siehe http://p3rl.org/rebackslash.

  
require 5.010;  
$text .= "\n" unless $text =~ /\R \z/msx;  

Für die standardgemäße, 100%ig korrekte Behandlung von Zeilenumbrüchen kommt man um http://p3rl.org/Unicode::LineBreak nicht herum.