in reply to RFC and debugging tips
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
Code like this stands a chance of being debugable using the debugger, and a better chance of being debuggable by inspection.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. }
|
|---|