I was hoping to have a strict alpha posted to the SourceForge SVN today (Oct 14
th, 2016 at 2:26pm) but I swear every time I test a section
I don't normally use something glitches up.
The problem is: YaBB's base code is
old. It's the poster child for legacy code.
YaBB was written before Perl really got security aware and before most of the ideas concerning localizing variables and testing for whether or not variables have explicitly established values got a foothold (or were even invented in some cases). All of YaBB's variables were originally what is now called 'global' - a global variable is (for the most part) inherited by whatever function calls that variable, no matter where that function is called or resides.
The strict pragma requires that all variables be declared as either 'my' or 'our'. And sometimes it's hard to tell if a variable should be an 'our' or a 'my'. (There's also a 'local' but that's not good according to Damien Conway.) And then there's the variables that, even though they've been declared to be 'our', don't want to be exported from where they are.
And then there's the overly complicated functions (sub routines). Research has been done that indicates a sub routine should not be overly complicated (having too many if/else statements and internal code blocks) - an overly complicated routine is not easily testable AND easily broken and may actually take longer to process than simpler code using easily testable chunks or sub routines. (The display sub routine comes in at a whopping complexity score of 510. 20 is considered 'good'.)