And the best way of debugging the problem?

Were I to try to debug this, I would first rework the code to be a lot more readable. I tried to work my way through this by sight, and gave up as soon as I got to the map{} that embedded an expression combining && and 'and', and a reference. Yikes.

Look at this code from the perspective of trying to follow it by single stepping in the debugger (or setting breakpoints). For that to work, you need lines that don't try to do too much.

Might it not be easier to debug code that read

if ( 0 == @_ ) { if ( 0 < @fifo && $next < @fifo ) { return $fifo[$next++]; } else { $next = 0; return; } } elsif defined($_[0]) { ... and so on } else { ... handle 'reset' et al. }
Code like this stands a chance of being debugable using the debugger, and a better chance of being debuggable by inspection.


In reply to Re: RFC and debugging tips by dws
in thread RFC and debugging tips by BrowserUk

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.