#!/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 Yankees } }; 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"; }