BEGIN { my @yaml_classes = qw{YAML::XS YAML::Syck YAML::Tiny YAML}; my $yaml_class = first { eval "use $_; 1" } @yaml_classes or die "Unable to load any of these YAML classes: @yaml_classes"; # Only expecting whatever YAML class is loaded to export these functions my @yaml_funcs = qw{Dump Load}; no strict 'refs'; my %yaml_exports = map { $_ => 1 } @{$yaml_class . "::EXPORT"}; $yaml_exports{$_} or die "$yaml_class doesn't export '$_'" for @yaml_funcs; }