Schrift
[thread]2099[/thread]

Python rockz! (Seite 8)

Leser: 3


<< |< 1 ... 5 6 7 8 9 >| >> 83 Einträge, 9 Seiten
sid burn
 2007-06-13 20:13
#23810 #23810
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=kristian,13.June.2007, 17:14]Hallo

Beim Linebreak geht es mir um die alten Macs da sind die Infos nicht gleich 10 != 13.[/quote]
Laut Wikipedia Seite hat MacOS9 oder älter als CR == 10 genutzt!

Und auch im Buch "Netzwerkprogrammierung mit Perl" wo auf die Zeilenumbruch eingegangen wurde der alten Macs (9 und älter) wurde dort nicht dieser Fall erwähnt. Dort steht ebenfalls im ganzen Buch durch das es ganz normal "\r\n" ist mit der Octalen Darstellung "\015\012" ist. Und für die alten Macs eben nur "\015".\n\n

<!--EDIT|sid burn|1181751392-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
GwenDragon
 2007-06-13 20:17
#23811 #23811
User since
2005-01-17
14538 Artikel
Admin1
[Homepage]
user image
Jaja, das \n und andere.
In CGI.pm gibt es sowas zum Nachschauen.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Define the CRLF sequence.  I can't use a simple "\r\n" because the meaning
# of "\n" is different on different OS's (sometimes it generates CRLF, sometimes LF
# and sometimes CR).  The most popular VMS web server
# doesn't accept CRLF -- instead it wants a LR.  EBCDIC machines don't
# use ASCII, so \015\012 means something different.  I find this all
# really annoying.
$EBCDIC = "\t" ne "\011";
if ($OS eq 'VMS') {
 $CRLF = "\n";
} elsif ($EBCDIC) {
 $CRLF= "\r\n";
} else {
 $CRLF = "\015\012";
}

Es gibt eben OS die ganz anders ticken.
Zudem ist nicht immer alles oktal richtig ;)\n\n

<!--EDIT|GwenDragon|1181751484-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

kristian
 2007-06-13 20:28
#23812 #23812
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo
[quote=sid burn,13.06.2007, 18:13]
Laut Wikipedia Seite hat MacOS9 oder älter als CR == 10 genutzt!
Und auch im Buch "Netzwerkprogrammierung mit Perl" wo auf die Zeilenumbruch eingegangen wurde der alten Macs (9 und älter) wurde dort nicht dieser Fall erwähnt. Dort steht ebenfalls im ganzen Buch durch das es ganz normal "\r\n" ist mit der Octalen Darstellung "\015\012" ist. Und für die alten Macs eben nur "\015".[/quote]
Ja, das ist die allgemeine Ansicht, nur daß es halt in perldoc perlport IMHO anders steht.
Dort ist der Linebreak der mit dem "\r" des Mac verknüpft ist, IMHO das "\n" auf der Nixe.
Es ist wohl so wie in Perldoc beschrieben: "confusing"

Die Lösung scheint mir nur mit einem eigenen Versuch möglich aber dazu brauchen wir den MacUser.

Gruß
Kristian
kristian
 2007-06-13 20:32
#23813 #23813
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo
[quote=GwenDragon,13.06.2007, 18:17]Jaja, das \n und andere.
In CGI.pm gibt es sowas zum Nachschauen.
[/quote]
Dir ist klar, daß dieses Beispiel den Mac nicht erwähnt und somit meine Annahme bestätigt, daß für die Macken kein Handlungsbedarf besteht?

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

user image
@kristian
Ich glaube du vertust dich da gerade etwas.

in perlport wird die Portabilität von "\n" angesprochen. Wenn du "\n" in einem Perl Programm schreibst dann ersetzt Perl eben nicht nicht genau in das ASCII Zeichen 10. Sondern es hängt davon ab welches OS du nutzt.

Wenn du "Hallo, Welt!\n" auf folgenden System nutzt kommt da letztendlich folgendes heraus.

Linux, MacOSX, Unix...: "Hallo, Welt!\012"
MacOS 9 und älter: "Hallo, Welt!\015"
Windows, Dos OS/2: "Hallo, Welt!\015\012"

Um es kurz zu sagen. Ein "\n" in Perl steht für ein Logischer Zeilenumbruch. Wenn du unter Linux "\n" nutzt dann bleibt es ein "\n" unter Windows wird ein "\n" sozusagenzu einem "\r\n" und unter MacOS wird es zu einem "\r".

Diese änderung wird deswegen gemacht, damit die Perl Skripte portabler sind. Ein "Hallo, Welt!\n" erzeugt also immer ein korrektes Newline, egal ob du das Skript nun unter einem Mac OS Windows oder Linux ausführst.

Das ändert aber wie gesagt nichts daran, das MacOS für einen Zeilenumbruch "\r" nutzt und dies das ASCII Zeichen 10 nutzt, genauso wie es Linux und Windows auch tun. Auf der ebene ist da nichts vertauscht!


Wichtig ist das korrekte Zeilenende bei der Netzwerkprogrammierung und da wird auch genau auf diese Problematik mit dem "\n" etc. hingewiesen. Das aber MacOS \r anstelle von "\n" nutzt das wird da nicht erzählt, und habe ich noch nirgends gelesen.

Ich glaube du hast den perlport abschnitt falsch verstanden?\n\n

<!--EDIT|sid burn|1181755229-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
kristian
 2007-06-13 21:27
#23815 #23815
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo
[quote=sid burn,13.06.2007, 19:18]@kristian
Ich glaube du vertust dich da gerade etwas.
[...]
Ich glaube du hast den perlport abschnitt falsch verstanden?[/quote]
Ja da sind wir beim Punkt, der unstrittig ist.
Irgendwer hat da was falsch verstanden ;-)

Ich glaube, daß sich deine Interpretation auf die Zeilen mit dem Sternchen (*) in perldoc perlport bezieht.
Da sehe ich für die Dosen den erwarteten Unterschied, für Mac-OS kleiner 9 sehe ich bislang kein Argument, welches meiner Annahme widerspricht.

Für mich bleibt es dabei, selbst fressen macht dick, selber schauen macht schlau, also wo ist die Datei vom Mac.
(bitte, bitte das billigst G4 kostet ne Mille)

Gruß
Kristian
betterworld
 2007-06-13 21:46
#23816 #23816
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=sid burn,13.06.2007, 11:07]split ist deutlich schneller anstatt mit einer Regex die Werte aufzusplitten.[/quote]
Also, split benutzt auch eine Regex. Aber es ist wohl tatsaechlich etwas schneller, wie ich gerade bei einem Benchmark herausgefunden habe. Finde ich aber nicht weiter schlimm.\n\n

<!--EDIT|betterworld|1181756976-->
sid burn
 2007-06-13 23:31
#23817 #23817
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Ich glaube, daß sich deine Interpretation auf die Zeilen mit dem Sternchen (*) in perldoc perlport bezieht.
Da sehe ich für die Dosen den erwarteten Unterschied, für Mac-OS kleiner 9 sehe ich bislang kein Argument, welches meiner Annahme widerspricht.

Doch das Beispiel von GwenDragon wiederspricht deiner annahme. Weiterhin gibt es noch Wikipedia, und das genannte Buch das ebenfalls angibt das MacOS da nichts vertauscht. Im Gegenzug dazu habe ich bisher noch nirgends eine Aussage gefunden wo steht das die ASCII Zeichen 10 und 13 auf einen Mac vertauscht werden.

Und auch in perlport finde ich nur eine bestätigen meiner Aussage:
Code: (dl )
1
2
3
4
 Perl uses "\n" to represent the "logical" newline, where what is logical may depend on the platform in use.  In MacPerl, "\n" always
means "\015". In DOSish perls, "\n" usually means "\012", but when accessing a file in "text" mode, STDIO translates it to (or
from) "\015\012", depending on whether you&’re reading or writing. Unix does the same thing on ttys in canonical mode. "\015\012"
is commonly referred to as CRLF.

Perl benutzt "\n" um logische Zeilen darzustellen. Das was "logisch" ist hängt von der Platform ab. In MacPerl entspricht "\n" ein "\015" (das ist Oktal und Dezimal entspricht das dem ASCII Zeichen 13 und das ist auf beiden PLatformen nunmal ein "\r")...\n\n

<!--EDIT|sid burn|1181763177-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
ptk
 2007-06-13 23:43
#23818 #23818
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=kristian,13.06.2007, 16:32]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.[/quote]
Nein. Userland ist BSD, der Kernel ein Mach-Kernel. Von Linux keine Spur...
kristian
 2007-06-14 00:40
#23819 #23819
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

Ich fasse es mal zusammen:
1.) Das Argument CGI.pm entspricht meiner Annahme.
Wenn beim Mac das \n ein \015 wäre und das \r ein 012 gäbe die Kombination \r\n den unsinnigen Construct \012\015 was im Netz nun wirklich kein Linebreak ist.
HTTP-Clienten müssen \015\012 sowie \015 und \012 verarbeiten (RFC) aber niemals \012\015.

2.) perldoc perlport bestätigt meine Annahme, schaut euch die Tabelle doch mal an, - oben gepostet - und erzählt mir nicht was \015 bzw. \012 bedeuten auch das steht im Posting oben.

3.) recode ist seit Urzeiten das Programm auf *xen zur Konvertierung von Charsets.
Wenn man sich die Translation-Tables ansieht gibt es in Bezug auf Linebreaks keinen Unterschied zwischen *x und Mac.
man recode bzw. info recode.

4.) hmmm, das ist mehr persönlicher Natur, mein Mentor in Sachen Perl hat die Meinung, die ich hier vertrete exact so von sich gegeben, gut, das ist kein Argument aber bevor ich Wikipedia glaube oder einem Buch, glaube ich dem was ich sehe oder dem was mein Lehrer mir sagte.
(was ich sehe hat Vorrang...)

5.) auch sehr eingeschränkt, ich liefere Software seit 2 Jahren an x Kunden (x ist ne größere Zahl), Probleme beim Upload gab es bislang nur bei Windows-Usern.

Lassen wir 4 und 5 mal beiseite, ihr könnt mich nur überzeugen, wenn ihr es mir zeigen könnt.

Wo ist die Text-Datei vom Mac, die am Zeilenende ein (aus Unix-Sicht) \r hat?

Etwas anderes zählt IMHO nicht.

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



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