use strict; use warnings; use File::Find; my @aModules; foreach my $sDir (@INC) { my $crFind = sub { my $sModule = substr($File::Find::name, length($sDir)+1); push(@aModules, $sModule) if (($sModule =~ s/\.pm$//) || ($sModule =~ /\.pl$/)); }; find($crFind, ("$sDir/")) if -d $sDir; }; print '' . join("\n", sort @aModules) . "\n";