Halihallo EisFux
=~ s/\n//; entfernt nur einen Zeilenumbruch und das ist - wie
coolblue - richtig feststellt genau der Letzte.Ähm, wenn ich mal vorsichtig berichtigen dürfte:
Nein, es entfernt den ersten, der im String auftaucht, chomp() dagegen den letzen. Aber das nur so nebenbei.
Richtig.
Im Übrigen ist das Verhalten von chomp() stark von der Variablen $/ abhängig. Es hackt nicht immer den letzen Zeilenumbruch weg. Wobei Zeilenumbruch ja auch nur eine ungefähre Umschreibung von Ausdrücken wie "\n" oder "$/" ist. ;-)
Genau. Deswegen sollte man ja chomp() verwenden, sonst müsste man
jedesmal wenn die Definition von "Zeilenumbruch" ändert, die RegExp
anpassen.
Aber wie ich bereits sagte, =~ s/\n$//; ist noch performanter, da der
Zeilenumbruch nicht erst gefunden werden muss, sondern nur das letzte
Zeichen mit \n verglichen werden muss und falls es denn gleich ist,
wird es "weg-replaced".Nur mal interessehalber: Macht sich der Performanceunterschied auch in normalen Webanwendungen bemerkbar (Ausführungszeit, Speicherverbrauch)? Da vertrödelt ein Perl-Skript die meiste Zeit doch sowieso damit, auf den Datenbankserver zu warten ...
Du hast dir die Frage bereits beantwortet: Der Performanceunterschied
ist verschwindenst klein. Du sparst bei 3.2 Mio. Scriptaufrufen
ziemlich genau nur 1 CPU-Sekunde :-)
Viele Grüsse
Philipp