Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^3: What's the best way to use Any YAML (not YAML::Any)

by kcott (Archbishop)
on Mar 15, 2014 at 21:35 UTC ( [id://1078489]=note: print w/replies, xml ) Need Help??


in reply to Re^2: What's the best way to use Any YAML (not YAML::Any)
in thread What's the best way to use Any YAML (not YAML::Any)

"Checking for Dump/Load is prudent, but all of the listed YAML modules implement the common Dump/Load API, so I don't think it's absolutely necessary."

Can you guarantee that you'll only ever use "the listed YAML modules"? Can you guarantee that you'll never want to use another function beyond Dump and Load in this, or a subclassed, module?

Yes, it's prudent. No, it's not absolutely necessary. It's two lines of code that you can choose to add to your module or not.

"The check for Dump/Load in your last version assumes the included module uses @EXPORT."

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.

-- Ken

Replies are listed 'Best First'.
Re^4: What's the best way to use Any YAML (not YAML::Any)
by djerius (Beadle) on Mar 17, 2014 at 17:56 UTC
    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.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2024-03-28 09:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found