Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7295[/thread]

Macintosh Dateien unter Win in Perl einlesen!



<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten
Weman
 2005-09-20 12:57
#58245 #58245
User since
2005-08-10
17 Artikel
BenutzerIn
[default_avatar]
Hallo alle,

ich bekomme eine Macintosh-Datei und soll diese mit Perl einlesen. Das Problem ist, dass die Datei nicht wirklich \n etc.. hat sondern alles in Hex gespeichert wurde.

Kann ich denn eine Datei von Hex umwandeln? Sonst habe ich so große Probleme beim Auslesen der Datei. Benötige für diese Datei einen Parser zum Speichern in einer Datenbank!

Vielen lieben Dank!
J-jayz-Z
 2005-09-20 13:32
#58246 #58246
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
perldoc -f pack
perldoc -f unpack

Damit geht es. Oder eben perl-externe tools nutzen
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Weman
 2005-09-20 13:38
#58247 #58247
User since
2005-08-10
17 Artikel
BenutzerIn
[default_avatar]
Servus,

leider sagt mir das überhaupt nichts!
J-jayz-Z
 2005-09-20 13:56
#58248 #58248
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Was sagt dir nichts? perldoc? Perldoc ist ein Nachschlagewerk für Perl Funktionen/Modulen oder anderen Sachverhalten. Kannst du auf der Kommandozeile aufrufen oder online lesen:
pack,
unpack
ansonsten: perldoc online
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Crian
 2005-09-20 14:45
#58249 #58249
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Wenn es Mac OS X ist, dann sind die Dateien im normalen Unixformat. Falls sie von einem früheren Mac OS ist das Format etwas anders. Zu ersterem Fall hatten wir hier schon ausführliche Diskussionen, such mal nach recode...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Weman
 2005-09-20 15:02
#58250 #58250
User since
2005-08-10
17 Artikel
BenutzerIn
[default_avatar]
Hi,

danke schon mal für die Antworten!

Ich mache jetzt da schon wirklich eine Zeit rum in der Arbeit und komme auf keinen Grünen Zweig!

Es ist leider nicht Mac OS X! ich verzweifle jetzt bald wie ich die Datei einfach umwandeln kann und ganz normal unter Windows ausgebe!
Crian
 2005-09-20 15:17
#58251 #58251
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
War es unter Mac eine Textdatei? Wenn ja, dann ist diese mit 0x0d getrennt, nicht mit 0x0d 0x0a wie unter Windows oder mit 0x0a, wie unter Linux üblich. Hilft das?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Ronnie
 2005-09-20 15:29
#58252 #58252
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Das Zeilenendezeichen des alten Mac OS ist \r, Windows verwendet \r\n und Unix benutzt \n. Wenn du denn Beginn deines Programmes wie folgt abänderst sollte es gehen:
Code: (dl )
1
2
    local $/;
$/="\r";

Genaueres unter: http://perldoc.perl.org/perlport.html#Newlines
format_c
 2005-09-20 16:17
#58253 #58253
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Also wie das sich für mich anhört ist die Datei in UTF-8 codiert.
Mit
Code: (dl )
my $latin_text = Unicode::String::utf8($text)->latin1();

dürfte es dann wieder lesbar sein.

Den ZeilenTrenner auf $/="\015"; müsste aber auch gehen.
Gruß Alex
Crian
 2005-09-20 17:02
#58254 #58254
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
[quote=Ronnie,20.09.2005, 13:29]Das Zeilenendezeichen des alten Mac OS ist \r, Windows verwendet \r\n und Unix benutzt \n.[/quote]
Vorsicht ... nicht mit \n diskutieren bitte, siehe andere Threads.

[quote=Crian,20.09.2005, 13:17]War es unter Mac eine Textdatei? Wenn ja, dann ist diese mit 0x0d getrennt, nicht mit 0x0d 0x0a wie unter Windows oder mit 0x0a, wie unter Linux üblich.[/quote]
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten



View all threads created 2005-09-20 12:57.