Can you guarantee that you'll only ever use "the listed YAML modules"?
I can guarantee that all modules in the list have Load & Dump. If one doesn't, my module can't use it, so it won't be in the list.
If I were to use a proxy module which didn't guarantee that API, I would have to check for it. The only one that I know of, YAML::Any, does offer that interface.
Can you guarantee that you'll never want to use another function beyond Dump and Load in this, or a subclassed, module?
I can guarantee that my module will only ever use Load & Dump.
I can't say anything about subclasses, but if they need a particular API, they'll have to ensure that it is met.
No, that check occurred in the original version, not the update. The original solution was hidden in a spoiler (for anyone interested in seeing the changes that were made). I thought that "original solution (see spoiler below)" made this clear but apparently not: I've added additional text making this clearer.
For some reason, I was unable to view the code in the spoiler: clicking on the link didn't reveal it properly; I obviously commented on the wrong code. My apologies for the confusion.
Thanks for your input.