Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: how do i parse a yaml set with perl ( can't )

by Anonymous Monk
on Feb 06, 2014 at 09:58 UTC ( [id://1073673]=note: print w/replies, xml ) Need Help??


in reply to how do i parse a yaml set with perl

Which library is capable of parsing this?

None

YAML is weak :) Re: Loading multiple files with YAML::XS (named streams)

#!/usr/bin/perl -- use strict; use warnings; use Module::Load qw' load '; use YAML::Any(); my $yaml = q{ # Explicitly typed set. baseball players: !!set ? Mark McGwire ? Sammy Sosa ? Ken Griffey # Flow style baseball teams: !!set { Boston Red Sox, Detroit Tigers, New York Yanke +es } }; MOD_YAML : for my $modYaml ( qw[ YAML::XS YAML::XS::LibYAML YAML::Syck YAML::Old YAML YAML::Tiny ] ){ #~ eval { load $modYaml; 1 } or do { warn $@; next MOD_YAML }; eval { load $modYaml; 1 } or next MOD_YAML; no strict 'refs'; local *Dump = \&{"$modYaml\::Dump"}; local *Load = \&{"$modYaml\::Load"}; local *{"$modYaml\::CompressSeries"} = 0; local *{"$modYaml\::Indent"} = 5; local *{"$modYaml\::UseFold"} = 5; # no visible effect local *{"$modYaml\::UseBlock"} = 1; # 5; # no visible effect, 1 or + 5 print "\n# Using $modYaml\n"; print eval { Dump( Load( $yaml ) ) } || $@; print "\n\n"; }

Replies are listed 'Best First'.
Re^2: how do i parse a yaml set with perl ( can't )
by david2008 (Scribe) on Feb 06, 2014 at 10:05 UTC
    Thanks for the quick reply.
    I understand.
    This file is created by a java program using the snakeyaml library. I will ask them to change the set to a hash where the values are 1.

      The order doesn't matter, but the elements are also simple values... why not make it an array?

      If you're making it a hash, then your values are used as the keys of the hash and you have to make up and store dummy values to complete the hash structure. That's confusing and inefficient.

        I use it internally as a set. It is true that i can just represent it as an array and internally convert it to a hash. This is a good point
Re^2: how do i parse a yaml set with perl ( can't )
by jellisii2 (Hermit) on Feb 06, 2014 at 13:58 UTC
    Could you elucidate on what you did after no strict 'refs' for educational purposes? I preach YAML quite a bit, and while I've heard of problems like what david2008 is having, I've never run up on them because I use the same lib to dump output as I do to process input.

      See YAML::Any, its just old-api way (inspired by Data::Dumper) of specifying formatting options ...

      some never worked, I doubt any of the options works anymore

      its a copy paste from 2009 when ysh disappeared from YAML, and I was seeing what I can see about YAML

      Actually its from 2011 when I took another look at YAML to see if I can roundtrip yaml without changing format; I even went to IRC to ask ingy about it and the answer was no

      Human writable/readable serialization format, great idea
      Uh oh, full spec is so full, its full of full
      Oh boy :) Java is the only language that fully supports the full spec
      Poor humans :) None or very weak editor support
      Damn computers :) No round tripping (what goes out looks nothing like what goes in)
      Awww :) No customizable beautifier ( no Perl::Tidy )

      So great idea, fantastic even, gets upgraded, support never that great, humans not that interested , humans choose JSON, JSON wins

      Maybe when YAML tools improve ten fold, brave folks will look at YAML again, but most will still stick with JSON :)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1073673]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (10)
As of 2024-04-23 09:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found