use strict; use warnings; BEGIN {our @usedModules; unshift @INC, sub {push @usedModules, [@_]; return undef;}} our @usedModules; ... my $versions = ''; for (@usedModules) { my $name = $_->[1]; $name =~ s/\..*//; $name =~ s|[\\/]|::|g; my $version = eval{eval "\$$name\::VERSION"}; $versions .= "$name \t$version\n" if defined $version; } print $versions;