in reply to Installed modules and their versions
Various methods of installing modules create metadata on what modules are installed. Unfortunately, reading this metadata only tells you about modules installed in this way, and there are many ways to install modules -- rpm, deb, MakeMaker, qpkg, MSI, cp...
Don't attempt to read any of that metadata. Instead, just look and see what modules are there:
(BTW, the ExtUtils::MakeMaker call there /does/ look in the actual file (and thus does not fall prey to my problem with metadata), and /does/ run code out of it -- but only one line. Also note that it returns the string 'undef' when there is no version, and not an actual undef.)use File::Find; use ExtUtils::MakeMaker; find( sub { next unless /.pm$/i; my $mod = $File::Find::name; $mod =~ s/^$File::Find::topdir\/?//; $mod =~ s/\.pm$//i; $mod=~s!/!::!g; my $ver=MM->parse_version($File::Find::name); print "$mod ($ver)\n" }, @INC )
|
|---|