Report versions of all modules in memory
use Module::Versions::Report; ...and any code you want...
This will run all your code normally, but then as the Perl interpreter is about to exit, it will print something like:
Perl v5.6.1 under MSWin32. Modules in memory: attributes; AutoLoader v5.58; Carp; Config; DynaLoader v1.04; Exporter v5.562; Module::Versions::Report v1.01; HTML::Entities v1.22; HTML::HeadParser v2.15; HTML::Parser v3.25; [... and whatever other modules were loaded that session...]
Consider its use from the command line:
% perl -MModule::Versions::Report -MLWP -e 1
Perl v5.6.1 under MSWin32. Modules in memory: attributes; AutoLoader v5.58; [...]
I often get email from someone reporting a bug in a module I've written. I email back, asking what version of the module it is, what version of Perl on what \s-1OS\s0, and sometimes what version of some relevent third library (like XML::Parser). They reply, saying \*(L"Perl 5\*(R". I say "I need the exact version, as reported by \*(C`perl -v\*(C'\*(L". They tell me. And I say \*(R"I, uh, also asked about the version of my module and XML::Parser [or whatever]\*(L". They say \*(R"Oh yeah. It's 2.27\*(L". \*(R"Is that my module or XML::Parser?\*(L" \*(R"XML::Parser.\*(L" \*(R"\s-1OK\s0, and what about my module's version?\*(L" \*(R"Ohyeah. That's 3.11." By this time, days have passed, and what should have been a simple operation \*(-- reporting the version of Perl and relevent modules, has been needlessly complicated.
This module is for simplifying that task. If you add \*(L"use Module::Versions::Report;\*(R" to a program (especially handy if your program is one that demonstrates a bug in some module), then when the program has finished running, you well get a report detailing the all modules in memory, and noting the version of each (for modules that defined a $VERSION, at least).
If this package is imported then \s-1END\s0 block is set, and report printed to stdout on a program exit, so use \*(C`use Module::Versions::Report;\*(C' if you need a report on exit or \*(C`use Module::Versions::Report ();\*(C' otherwise and call report or print_report functions yourself.
The first one returns preformatted report as a string, the latter outputs a report to stdout.
Copyright 2001-2003 Sean M. Burke. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.
Ruslan U. Zakirov <[email protected]>
Sean M. Burke, <[email protected]>