use strict; use warnings; use Data::TreeDumper; use File::Spec; my %modules = (   map { $_ => undef }   qw(IO::Socket IO::Socket::SSL Data::Dumper) ); foreach my $pm (keys %modules) {   foreach my $path (@INC) {      my $file = File::Spec->catfile($path, split(/::/, $pm)). '.pm';      if (-e $file) {         $modules{$pm} = $file;         next;      }   } } print DumpTree(\%modules);