Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: the annoying keys "key" and "value"

by LanX (Saint)
on Dec 23, 2010 at 21:21 UTC ( [id://878881]=note: print w/replies, xml ) Need Help??


in reply to the annoying keys "key" and "value"

Where did you find this and what does the documentation there say about the motivation?

Maybe sorting hashes?

Or associative structure allowing repeated keys?

Maybe for representation of multi-value elements of an HTML form?

Please help us understand that you're posting a serious real question and you are not just trying cheap trolling...

Cheers Rolf

Replies are listed 'Best First'.
Re^2: the annoying keys "key" and "value"
by jabowery (Beadle) on Dec 23, 2010 at 22:07 UTC
    I presumed a level of experience that is much less common than I expected, hence the seeming cryptic nature of my message. Sorry.

    This pathological representation of a hash is in wide-spread use due to some idiotic standards adopted early in the history of XML. It shows up in Perl frequently when dealing with XML. In the most recent situation I've encountered, WordPress XML-RPC returns its custom fields in such a representation. There are even some WordPress XML-RPC libraries in some languages that require you to pass in an ordinary hash rather than this pathological (array of hashes) representation of a hash -- thereby hiding the pathology.

    I was hoping to discover the generic name for this pathological hash representation to search for packages that specifically deal with it so as to hide the pathology.

      IIRC XML allows multiple children-elements of same tag-name (like - as already mentioned - some HTML-Form elements do) and they are ordered.

      Ordinary hashes in perl don't allow multiple keys of same name and have no order.

      I doubt there is any common name, you might call it "XML-structure".

      Cheers Rolf

        Thanks for the cogent response -- although I expect someone has come up with a term for this kind of annoying representation of a hash.

        PS: I understand the "reason" for the pathological representation. The non-pathological representation would have:  $hash{$key}=[$value1, $value2, $value3,...] and the distinction between array and scalar fields would be handled by the schema.

      > In the most recent situation I've encountered, WordPress XML-RPC returns its custom fields in such a representation.

      after looking up XML-RPC#Data_types on wikipedia I encountered the following "workaround" to represent associative arrays in XML:

      <struct> <member> <name>foo</name> <value><i4>1</i4></value> </member> <member> <name>bar</name> <value><i4>2</i4></value> </member> </struct>

      Is this part of the scheme your problem?

      In my eyes it's XML which is pathological here, and CPAN modules just try to reflect the structure to avoid ugly bugs caused by information loss when cross transforming data...

      For instance:

      • Can you guaranty that no implementation XML-RPC-parser will ever try to pull information out of the order of the "members"?

      • Do they handle repeated keys alike?

      And if you think it's so well defined, so why don't you just hack your own map_to_pathological(%hash) routine which simplifies your task?

      CPAN authors might show interest in your patch, or you publish your own add-on module.

      Cheers Rolf

      I don't understand , how it is pathological (having properties that cause unusually bad behaviour, especially regarding correctness or performance)?
        I believe he means "unduly hard to use". That may or may not be true depending on what's needed of the data.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2024-03-29 07:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found