Revision history for Debug-Easy 0.01 2011 Initial private use release. 0.02 June 14, 2013 Actual public release 0.03 January 8, 2014 Minor operational improvements 0.04 March 11, 2014 Parameters for initialization are now case-insensitive. 0.05 April 14, 2014 Multiline output only shows the benchmark time for the first line to avoid confusion. This fix was previously listed in version 0.04, but was never actually implemented, sorry. 0.06 July 18, 2014 Benchmark data turned on for first line only for multiline output. Corrections and additions to documentation. Additions to code comments Simplified 'debug' object and split it into two. Added tests to build process 0.07 July 19, 2014 Added the ability to customize the debug level labels Fixed the warning message in the END block that was reported during testing. This was caused when the module is loaded, but the object never created (which happens in one of the tests). Additional code comments added Tweaks to the Makefile.PL build script to allow for parallel testing 0.08 July 23, 2014 Added DEBUGWAIT experimental debug level. 0.09 July 25, 2014 Removed the Perldocs for 'send_to_logger' and made it an internal class only by renaming it '_send_to_logger'. Made 'Data::Dumper::Simple' optional, and will fall back to just 'Data::Dumper' if it cannot find it. 0.10 November 26, 2014 Made the LogLevel parameter case-insensitive. Tweaked the Makefile.PL to be more CPAN friendly. 0.11 November 26, 2014 Data::Dumper::Simple is now a requirement. Some of the test files worked incorrectly in Perl versions < 5.10 That should be fixed now. 0.12 November 27, 2014 Modified Makefile.PL to be more platform friendly. 0.20 March 21, 2015 Version number bump, because of the drastic change of switching to Data::Printer and removing Data::Dumper::Simple. Data:Printer's format more closely goes along with this module's output format. Fixed a small bug if you passed a mixture of strings and references in the anonymous array. Now references are now passed properly through Dumper. 0.30 March 31, 2015 Another version number bump. I did a little bit of backtracking. 'Data::Printer' and 'Data::Dumper::Simple' are now optional. They will be used if available, otherwise 'Data::Dumper' is used. Also, '__LINE__' is no longer necessary. '__LINE__' was used as 'caller' never seemed to give the right line number. I believe I have solved that problem. The code checks for a '__LINE__' parameter, but doesn't use it. You may leave this parameter out entirely. 0.31 April 06, 2015 Ouch, it seems 'Module::Load::Conditional' is more trouble than it is worth. Hopefully, this fix will allow more tests to succeed on different platforms, as version 0.30 failed a lot of them. Seriously, I got a lot of failed Test::Reporter reports back. I am so sorry. I have chosen my own way of testing and loading modules, and it seems to be working much better. 0.32 May 24, 2015 Improved (fixed really) the PREFIX setting. 0.33 May 25, 2015 Added %F to th prefix fields. It inserts the script's name. 0.34 May 31, 2015 The Data::* module loading has been fixed, and yes, another required module has been added to the install. ** Please don't use this version. It's output is ugly and messed up. 0.35 June 10, 2015 Wow, I sure screwed up 0.34. Sorry about that. I put the padding in the wrong portion of the output. I'm not sure if it's worth placing in there anymore anyway. Added a few new filters to 'prefix'. It now detects if running as a child, and indicates as such. Helpful for forking scripts. 0.36 June 13, 2015 Lots of fixes. * Complete rewrite of the line number and caller location algorithmn. It now properly prints exactly the calling location, it's proper line number, and the preceeding line numbers from where those subroutines were called. You get the entire tree in names and line numbers. This may slightly slow down the output, but it's very neglegible. * Indenting of output for nested calls done properly now. Only one space per level. No need to use up even more precious line space. * Line number(s) are auto-padded for proper alignment (at least in subsequent output). This behavior matches the subroutine name padding behavior. * Speaking of subroutine name padding... the default has been changed from 25 spaces to 15. You, of course, can change that when you instantiate the object, as usual. * Line number padding is adjustable now too. * You can now indicate on output whether running as a forked child or the parent. This is with the "%f" prefix placeholder. It only prints a "P" for parent, or "C" for child. This adds to the behavior of version 0.35, where it only printed it was a child when the child exited (which it still does). 0.37 June 13, 2015 Important fix Ok, the verbosity of the tree was a bit much I see. So... I added a couple new prefix options. * %s gives you just the caller line number, no nested numbers * %S gives you just the caller name, no nested names mile long. Also, you can define a specific prefix for each log level. The default is short (above) callers and numbers, BUT the DEBUGMAX prefix is using the detailed %P and %l. 1.00 June 15, 2015 Major changes, thus a version upgrade. Also, this is not backwards compatible with earlier versions that have custom prefixes. You have been warned! The filters are completely different. Read the POD to find out. Nevertheless, they are easier to read now, and no longer cryptic. This renders the older versions obsolete. Log level checking is faster, and thus will not significantly slow down your code. ** This version was removed from CPAN due to a prefix error related to the new changes 1.01 July 1, 2015 Prefix issues have been fixed. Everything is back to normal. 1.02 July 1, 2015 Ugh... missed the date and time 1.03 July 10, 2015 Benchmarking fixes. 1.04 July 10, 2015 Made some changes in benchmarking and loglevel output. Nothing major. Mostly fixes and cosmetic changes. 1.05 July 10, 2015 Renaming of some internal variables for easier reading. Cleaned up with Perltidy. 1.06 October 12, 2015 Restored basic Data::Dumper support, but only for legacy compatibility. 1.11 February 10, 2016 Revamped the documentation to make it easier to read. There were previous POD issues. They should be corrected now. Consolidated some documentation, once again for readability. Discouraged the usage of the "debug" method in favor of the direct ERR, WARN etc. methods. "debug" remains for legacy compatibility, however. 1.13 July 19, 2016 Added option for Threads. 1.14 July 30, 2016 Addressed threading code for non-threaded Perls, at install instead of runtime. Build.PL and MakeMaker.PL actually physically removes the code reporting on thread-specific information. 1.15 October 19, 2016 Fixed thread labeling sprintf issue 1.16 November 22, 2016 Removed the now defunct "$Modules" from the exportable variables. Fixed the code in the "examples" directory. I am terribly sorry these were not working. I have brought them up to date, and they should be functioning properly. 1.17 December 18, 2016 Added "Best" module dependency. This was added to allow for automatic loading of "Data::Dumper::Simple" or "Data::Dumper", depending on what the user has installed in their system. The "Data::Dumper" package is included with the Perl core installation. So at least "Data::Dumper" will work. The "Data::Dumper::Simple" module is very handy for debugging, and I deemed it important to use if it is available. If "Data::Dumper" nor "Data::Dumper::Simple" is not your preference for variable structure representation, then you will have to load your own and use it to generate the debugging output desired. 1.18 March 10, 2017 Some minor documentation and threads check changes. 1.18.1 March 10, 2017 Added GitHub info to the documentation. 1.18.2 June 3, 2017 Fixed the tests. 1.18.3 June 14, 2017 Apparently the tests were still flakey. This should fix. 1.19 July 12, 2017 Dumper sorting and purity is enabled by default 1.20 August 17, 2017 Removed Data::Dumper::Simple support and the need for Best. Data::Dumper::Simple takes far too long to start up. It's nice output isn't worth the execution delay. 1.21 June 06, 2018 Added "%Epoch%" prefix value 1.22 June 08, 2018 Make it multi-object aware. Now you can instantiate more than one instance using different file handles. 1.23 June 12, 2018 It seems the Log::Fast documentation on instantiating objects is vague Changed "global" to "new". 2.00 June 13, 2018 I completely ditched the Log::Fast module. It does not handle multiple instances well. This also means I had to ditch the unix sockets feature However, you can assign a socket to a filehandle and restore that. A new version was started due to this drastic change. 2.01 June 13, 2018 Whoops, Ok, take 2. The loglevel now shows. Sorry about that. 2.02 August 10, 2018 Fixed the DateTime error on object destroy. It wasn't catestrophic for your code, but it made logs messy. 2.03 July 15, 2019 Apparently the procedure field is blank on some main calls. This fix should take care of that. 2.04 September 3, 2019 2.05 April 5, 2021 Added Data::Dumper debug variable "Deparse" 2.06 June 24, 2021 Updated the documentation and removed some outdated information. Also removed the Build.PL script as that is depreciated. 2.07 June 24, 2021 Documentation changes missed in README files. That has been corrected. 2.08 July 12, 2023 Added github info and list of modules I write to the perldoc section. 2.09 Oct 17, 2023 Added conditional use of Data::Dumper::Simple for better output, but falls back on the distribution included Data::Dumper if not installed. Change the requirement of threads to its conditional use if it doesn't exist. This was already mostly implemented in the code, except for the "use" command which forced its requirement. That has changed. Non-threaded Perls can now use this module. 2.10 Nov 27, 2023 Muted the initial message if log level is ERROR. In other words, be silent. 2.11 Nov 27, 2023 Fixed the eval for loading Data::Dumper::Simple 2.12 Dec 12, 2023 Relaxed Perl version requirements to 5.08 2.13 Dec 15, 2023 Relaxed module version requirements in make. 2.14 Mar 07, 2024 Changed the Data::Dumper specific output behavior 2.15 Apr 20, 2025 Control variables were case specific. I relaxed that requirement. The documentation still shows the case sensitive variables, but the actual code is forgiving. 2.16 Jun 13, 2025 Some minor documentation changes. A little optimization. Build Makefile.PL also modified. 2.17 Aug 29, 2025 Modifications to the build process. 2.18 Nov 11, 2025 Changed how versioning is handled 2.19 Nov 21, 2025 Changed COLOR handling Removed DateTime 2.20 Dec 13, 2025 Optimized module 2.21 Jan 14, 2026 Modified the version handling 2.22 Mar 07, 2026 Numerous optimizations to increase the speed of execution to give as little impact as possible to the main script. 2.23 Mar 07, 2026 Fixed a typo that ignored case where case was important. 2.24 Mar 07, 2026 Removed an unneeded variable. 2.25 April 15, 2026 Fixed %date%, %time%, %Benchmark% and %epoch% tokens. 2.26 April 15, 2026 Had to revert to 2.21 then make many changes to bring it up to 2.26 Improved documentation. 2.27 May 14, 2026 Documentation improvements.