http://www.perlmonks.org?node_id=985813


in reply to A question of style: Composite keys to multiple values

means add a parallel "%Field_B_Resolver"

Why a parallel hash? Why not just preload one hash with both values:

$resolver{ {lc("$External_A|$External_B") } = [ Internal_A, Internal_B + ];

And retrieve they together.

Or if the table is large and space is tight:

$resolver{ {lc("$External_A|$External_B") } = "Internal_A Internal_B";

And split them for use.

But using a "two strings smacked together" key just seems wrong.

Again why? Composite keys are a perfectly natural solution used in all manner of DB/dataretreival mechanisms.

You could use nested hashes $resolver{ External_A }{ External_B}.

But if the code is working as is, I'd want a reason (beyond is "seeming wrong") before I'd change it.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?

Replies are listed 'Best First'.
Re^2: A question of style: Composite keys to multiple values
by Voronich (Hermit) on Aug 06, 2012 at 19:57 UTC

    The second hash was a matter of expedience based on the incredibly limited amount of time I had to get a change done and in SCM. It fell deep into the land of "unforgiveable mess that I could be absolutely confident about, thereby making the business customer happy as a clam."

    As my business customer is hands down the best one I've EVER had in my career I was able to have the "ok I can get this in for tomorrow. But that means that you get no changes next week while I fix what I had to do to do this" conversation with him. A condition which, along with the desperation on my face, compelled him to concede to.