in reply to Are there CPAN modules that can help write realtime software catalogs

I would put a subroutine into @INC that simply logs all the filenames/module names that get loaded, likely into a text file named after $0 (the currently running program). I'd use a text file to avoid any hassle with the database, just for the case when it is unavailable.

If you can set up $ENV{PERL5OPT} for every user, you can install the hook for every user:

package LogLoadedModules; use strict; sub log_loaded_module { my( $self, $file_to_load ) = @_; write_to_log_file( $0, $file_to_load ); return; # we didn't find anything } # Automatically install the hook in @INC when this # module is loaded sub import { unshift @INC, \&log_loaded_module; } 1;

Then you can set up @INC for every user by having

export PERL5OPT=-MLogLoadedModules

Update: Fixed unshift line, as corrected by Perlbotics