Schrift
[thread]2099[/thread]

Python rockz! (Seite 7)

Leser: 3


<< |< 1 ... 4 5 6 7 8 9 >| >> 83 Einträge, 9 Seiten
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
pq
 2007-06-13 13:11
#23801 #23801
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
es sei denn, man will regexes ausführen, bei $_ kann man $_ weglassen, bei my $line nicht
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
sid burn
 2007-06-13 13:15
#23802 #23802
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=pq,13.June.2007, 11:11]es sei denn, man will regexes ausführen, bei $_ kann man $_ weglassen, bei my $line nicht[/quote]
Klar, $_ kann man ja sogar bei noch viel mehr Sachen weg lassen. ;)

In dem ganz speziellen Fall das ich in der while Schleife lediglich regexe ausführe um damit die Zeilen zu ändern und sonst nichts. Und jede Regex sehr kurz ist, würde ich das wohl auch mit local $_ machen. Da es in diesem Fall wieder lesbarer wird, und man sich auf das wichtige begrenzt.

In allen anderen Fällen wo man noch mehr macht, oder die Regexe länger werden würde ich $line =~ m/.../ schreiben. auf 7 Zeichen kommt es auch nicht mehr drauf ein. Zeitersparnis beim Schreiben von paar Mikrosekunden. WoW!!!

Meistens erlebe ich aber Fall 2.\n\n

<!--EDIT|sid burn|1181726225-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
pq
 2007-06-13 13:32
#23803 #23803
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich sag ja nur. das war keine aufforderung "benutzt immer $_"
es war nur eine antwort auf "Ansonsten ist das Beispiel sogar gleich lang wie mit local"
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
kristian
 2007-06-13 16:13
#23804 #23804
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Zum Thema Linebreak auf dem Mac bin ich immer noch der Überzeugung, daß der Mac \r benutzt aber beim Mac \r und \n - aus Unix-Sicht - vertauscht sind, sprich in Bytes ist \r auf dem Mac das Gleiche wie \n auf dem *x.

Hat denn keiner von euch nen Mac und kann mal eine einfache Textdatei erstellen und gezippt zum Download anbieten?
Dann könnte ich meine Meinung prüfen und ggf. revidieren.

EDIT: 2 Stunden Suche...
Ich wollte mir schon ne Macke kaufen um es zu testen aber siehe:
perldoc perlport
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Some of this may be confusing.  Here's a handy reference
to the ASCII CR and LF characters. You can print it out
and stick it in your wallet.

LF eq \012 eq \x0A eq \cJ eq chr(10) eq ASCII 10
CR eq \015 eq \x0D eq \cM eq chr(13) eq ASCII 13

| Unix | DOS | Mac |
---------------------------
\n | LF | LF | CR |
\r | CR | CR | LF |
\n * | LF | CRLF | CR |
\r * | CR | CR | LF |
---------------------------
* text-mode STDIO


oder verstehe ich da was falsch?

TIA & Gruß
Kristian\n\n

<!--EDIT|kristian|1181740502-->
Linuxer
 2007-06-13 17:53
#23805 #23805
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
zum Thema Linebreak gilt auch noch zu beachten, dass Mac nicht gleich Mac ist; es gibt da auch Versionsunterschiede; siehe Wikipedia : Zeilenumbruch
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
kristian
 2007-06-13 18:32
#23806 #23806
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Ja klar wenn das Mac-OS ein X hat, ist es ein *x das IMHO auf "LinuxPPC" basiert, egal was Wikipedia und die anderen schreiben.
Ich brauchte 1997 ein Linux für nen PPC und das einzige das es damals gab kam aus den Staaten, (einmal jährlich beim Zollamt abholen) und konnte im Netz unter www.linuxppc.com gefunden werden.
Die Schiene ist wohl mitlerweile tot...

Gruß
Kristian

EDIT: geändert 1997 nicht 1994, von da ist zumindest die älteste CD die ich gerade greifen konnte\n\n

<!--EDIT|kristian|1181745302-->
kristian
 2007-06-13 18:38
#23807 #23807
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Der Artikel in Wikipedia bestätigt mein Verständnis von perldoc perlport nicht, ich bitte also nach wie vor um eine gezippte Textdatei von einem MAC-OS ohne X bzw. bis Version 9.0

Gruß
Kristian
sid burn
 2007-06-13 18:51
#23808 #23808
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=Linuxer,13.June.2007, 15:53]zum Thema Linebreak gilt auch noch zu beachten, dass Mac nicht gleich Mac ist; es gibt da auch Versionsunterschiede; siehe Wikipedia : Zeilenumbruch[/quote]
Schrieb ich doch bereits. ;)

Quote
Ja gibt es. MacOS und älter (nicht MacOS X)..


@kristian
Laut Wikipedia ist die Darstellung identisch. Zum anderen Bezweifle ich das MacOS da etwas anderes damals benutzt hat.

ASCII ist doch ein Standard und die ersten 128 Zeichen sind doch fest definiert, und dadrunter fällt auch LN und CR.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
kristian
 2007-06-13 19:14
#23809 #23809
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Beim Linebreak geht es mir um die alten Macs da sind die Infos nicht gleich 10 != 13.

ASCII ist ein Standard und bei den Charsets, die mit ISO beginnen sind die ersten 128 Zeichen gleich.

Der Mac benutzt aber kein Charset, welches mit ISO beginnt.

Gruß
Kristian
<< |< 1 ... 4 5 6 7 8 9 >| >> 83 Einträge, 9 Seiten



View all threads created 2007-06-03 17:08.