1Danke
ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
1376
1376
EMPFEHLEN
-
Hallo,
ich versuche gerade ein Object mittels decode_json aus dem __DATA__ Teil vom Skript zu instanzieren. Da das später mehrmals geschehen soll mit verschiedenen Objecten stelle ich mit seek() die Position immer wieder zurück. Nur leider bekomme ich immer eine Fehlermeldung sobald ich versuche die Daten zu decoden. Wenn ich seek() weglasse funktioniert es.
Hier ein Beispiel:
Vielen Dank schonmal!Code :1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use JSON; sub retrieve { seek(DATA, 0, 0); return decode_json(join("", <DATA>)); } my $data = retrieve(); __DATA__ {"a":"ALPHA","b":[1,2,3,4,5]}
-
Hi!
Hast Du die Fehlermeldung mal genau studiert? Da dürfte so etwas wie "#!/usr/bin/perl sieht nicht nach JSON aus" 'drin stehen... Die Ursache liegt darin, dass DATA kein Handle auf den Bereich nach __DATA__ ist, sondern auf die gesamte Datei:
Du übernimmst das Handle direkt vom Parser, welcher stoppt sobald er __DATA__ "gesehen" hat. Deswegen brauchst Du seek() auch nicht aufzurufen wenn Du die Daten nur einmal einliest. Weil Du aber DATA mit seek() auf Position 0 setzt, behandelt Dein Code die gesamte Datei als JSON-String und meckert.
Abhilfe schafft hier tell():Code Perl:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/perl use strict; use warnings; use JSON::XS qw(decode_json); use Data::Dumper(); my $TOLD = tell(DATA); sub retrieve { seek(DATA, $TOLD, 0); return decode_json(join("", <DATA>)); } my $data = retrieve(); print Data::Dumper->Dump([$data]); __DATA__ {"a":"ALPHA","b":[1,2,3,4,5]}
Gruß
Enum
-
Super, Danke!
-
Erledigt?!
-
Oh stimmt ja.
Ähnliche Themen
-
LOAD DATA INFILE funktioniert nicht
Von Kalito im Forum PHPAntworten: 4Letzter Beitrag: 18.01.11, 11:52 -
Computer startet nicht, amd data change update new data to dmi
Von Aiwonnie im Forum HardwareAntworten: 2Letzter Beitrag: 08.09.10, 17:32 -
[Perl]Auslesen von Content-Type multipart/form-data
Von Nugorra im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 20.08.09, 12:40 -
Remote connection auf MSSQL Server funktioniert nicht mit Perl
Von Sylan im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 04.09.07, 19:41 -
cgi, perl funktioniert nur teilweise****?
Von robertino im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 3Letzter Beitrag: 06.08.03, 21:48





Zitieren
Login





