Thread Python rockz! (82 answers)
Opened by pktm at 2007-06-03 17:08

sid burn
 2007-06-13 13:07
#23800 #23800
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Ist \r?\n denn absolut portabel? Ich dachte, es gäbe auch Systeme, die schlicht \r verwenden.

Ja gibt es. MacOS und älter (nicht MacOS X), verwendet "\r" als Zeilentrenner.

Man könnte folgende Regex Verwenden:

Code: (dl )
m/(?:\r|\r?\n)$/


Eigentlich müsste man noch die Alternation weg bekommen damit es Performanter ist. Weiß aber gerade nicht mehr wie...

Quote
Ich mag split ja sowieso nicht besonders und finde, dass es viel zu viel gebraucht wird

Ich finde es wird viel zu wenig verwendet. split ist deutlich schneller anstatt mit einer Regex die Werte aufzusplitten. Leider benutzen viele den m// Operator anstatt das Performantere split(). Ansonsten ist es finde ich auch deutlich leichter zu verstehen für jemand fremdes der den Code liest. Da er sofort sieht das etwas gesplittet werden soll. Bei einer einfachen Regex ist das nicht so ersichtlich.

Quote
[quote=renee,03.06.2007, 19:12]Irgendwann wirst Du es noch schaffen, allen das local einzuimpfen *daumendrück*

Danke :) Ihr könnt auch gerne alle mithelfen ;)[/quote]
Meine empfehlung wäre erst gar kein local zu nutzen, sondern gleich eine benannte lexikalische Variable.

Wenn man
Code: (dl )
while ( local $_ = <$fh> ) {...}
schreibt ist das für manche vielleicht irritierend warum dort ein local steht. Ein Vorteil in der Kürze hat man letztendlich auch nicht mehr. Von daher empfehle ich gleich ein.
Code: (dl )
while ( my $line = <$fh> ) {...}
Dadurch umgeht man die Probleme wie mit dem local, und man benutzt eine Aussagekräftigen Namen, was die Lesbarkeit erhöht. Ansonsten ist das Beispiel sogar gleich lang wie mit local... (Was mir persönlich egal ist, ich Golfe ja nicht)\n\n

<!--EDIT|sid burn|1181725898-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Python rockz!