Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^2: Special undefs with attributes

by bsb (Priest)
on Sep 25, 2006 at 03:50 UTC ( [id://574652]=note: print w/replies, xml ) Need Help??


in reply to Re: Special undefs with attributes
in thread Special undefs with attributes

I asked because I couldn't think if a way to do it and it seems generally useful to be able to use interesting values of undef (eg. Perl6 is to support this for exceptions and potentially other things).

I can solve the problem at hand by other means, so my question is not seeking a specific solution but a general technique, and knowledge about what is possible in Perl 5.

Since you are curious about the context, I have an application which uses Storable for persistence and undef is used to represent "no answer". This works nicely for the core engine. I'm now working on a tool chain to convert a this data into various presentation formats, a few of which would like to distinguish between existant/nonexistant undefs and present them differently (the distinction being "no answer"/"no answer, never saw the question"). The distinction is more in the minds of the users than anywhere else, most of the utilities will not make this distinction and shouldn't be troubled by it. My current solution is to maintain the flags in a separate structure in parallel to the main data stream.

My original question mentioned YAML because the data stream pipeline uses IO::YAML pass data beween utilities.

If you have other suggestions, they're welcome,

Brad

Replies are listed 'Best First'.
Re^3: Special undefs with attributes
by GrandFather (Saint) on Sep 25, 2006 at 04:09 UTC

    Would it be appropriate to use an object to represent either the answer, the question, or the question and answer? If magic is to be invoked in any case, better to invoke "standard" magic than to invent a tricky sort of magic such as giving meaning to something who's only meaning is to say "you can know nothing about me because I don't exist".


    DWIM is Perl's answer to Gödel
      Just to be clear, I'm not planning on deploying XS overrides of core ops, nor tied and overloaded contructs. If this had been implemented in a module, then perhaps I'd consider it.

      Only the answers (and the exists flags) are in the data stream being transformed, not the questions. I'll think about wrapper objects further.

Re^3: Special undefs with attributes
by perrin (Chancellor) on Sep 25, 2006 at 15:27 UTC
    I've often been told that it's a bad practice to use the lack of data to mean something. An undef means we have no data. If you want it to mean something else, as you do here, I think it's a lot better to make some data that explicitly means "no answer" as GrandFather suggested. It's also probably wise to steer clear of the kind of trickery that would be required to do what you asked for originally, since it's likely to be a brittle solution.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (7)
As of 2024-04-24 20:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found