Quick question: What would be the most efficient way (apart from a simple search) of testing if a sortable key exist in a hash AND (here's the real question ) if it doesn't to get the next highest one.

This isn't a quick question at all. Essentially its not an operation that hashes are suitable for. Depending on how often you fetch and how often you store will determine the best way to do it. If the data is relatively static and you are looking at optimising look up times then I would consider a pair of arrays, one with the keys, they other with the values. Binary range searching isn't difficult and makes look up times fast. OTOH, if you have a good ratio of stores to fetches then a tree structure will be more suitable. Some hybrid may also be preferable.

PS: Did you really mean defined there? Did you actually mean exists?


---
demerphq

    First they ignore you, then they laugh at you, then they fight you, then you win.
    -- Gandhi



In reply to Re: retrieve next avaiable element in sorted hash by demerphq
in thread retrieve next avaiable element in sorted hash by vinforget

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.