http://qs321.pair.com?node_id=490542

zentara has asked for the wisdom of the Perl Monks concerning the following question:

UPDATE: Problem solved with YAML-0.39

Hi, up to now, I often used YAML to make data dumps, because it gave a nicely indented printout. But I just ran into a situation where YAML drops data on it's printout, but Data::Dumper dosn't. What I am doing is converting a 1 meg xml file to a user-friendly-hash and dumping the hash.

Here is a damaged portion of the YAML dump, the keys begin with SH, followed by a sub hash. I've commented where the YAML dump fails, it truncates the previous key's "stop" and "writer" subhash, and the next key is truncated to ':'. Data::Dumper will not make this error.

Has anyone seen this sort of thing before?

...... ...... SH563415.0000: actors: '' category: 'Children Series ' channel: 99 channel_info: 9 CBET fcc CBET description: '' director: '' episode_num: SH563415.0000 length: '' makedate: '' rating: '' star_rating: '' start: 09:45 : # key lost, as well as previous key's stop and writer actors: '' category: 'Children Animated Series ' channel: 99 channel_info: 9 CBET fcc CBET description: A canine's adventures when he was very young. director: '' episode_num: SH596834.0000 length: '' makedate: '' rating: '' star_rating: '' start: 08:00 stop: 08:30 writer: '' SH608927.0000: #beginning of next key ...... ......

I'm not really a human, but I play one on earth. flash japh

Replies are listed 'Best First'.
Re: Is YAML reliable on big files?
by zentara (Archbishop) on Sep 09, 2005 at 12:49 UTC
    Well the problem was I needed to upgrade my version of YAML. The error above was with YAML-0.35 , but YAML-0.39 does not give the error.

    I'm not really a human, but I play one on earth. flash japh
Re: Is YAML reliable on big files?
by YuckFoo (Abbot) on Sep 09, 2005 at 21:04 UTC
    zentara,

    I don't think YAML's unreliability has anything to do with the size of structures. Parsing YAML seems to be too difficult for YAML.

    YamlFoo

    #!/usr/bin/perl use strict; use Data::Dumper; use YAML qw(Dump Load); my $before = { ok => [ {one => 1}, {two => 2}, ], not_ok => [ {-one => 1}, {-two => 2}, ], }; my $after = Load(Dump($before)); print Dumper $before; print Dumper $after;