To me your test shows that you CAN'T reach lower than the start of the array

I'd love to see what's your definition "can" in this situation. Let's say you're right and you can't reach before the start of the array. What would be returned if you could?

To me, "can" would be returning what's at that location. It correctly returns undef.

Unless I can figure out how to differentiate a tied call from a direct one.

sub FETCH { my ($self, $i) = @_; return $self->_fetch($i); } sub fetch { my ($self, $i) = @_; $i += $self->num_eles() if $i < 0; return undef if $i < 0; return $self->_fetch($i); } sub _fetch { my ($self, $i) = @_; # $i is guaranteed to be in range ... }

In reply to Re^4: index wrapping in tied FETCH and EXISTS by ikegami
in thread index wrapping in tied FETCH and EXISTS by cmac

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.