use File::Find; foreach my $dir (@INC) { find( sub { if (-f $_ and /\.pm/) { my $module = $File::Find::name; $module =~ s|\Q$dir\E/||; # remove part of @INC $module =~ s|\.pm$||; # remove extension .pm $module =~ s|/|::|g; # translate / to :: print "$module\n"; } # if }, $dir); } # foreach