#!/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";
}
| [reply] [d/l] |
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.
| [reply] |
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.
| [reply] |
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.
| [reply] [d/l] |
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 :)
| [reply] |