I don't know if there's an official way, but here's what I could whip together:
sub find_installed_path {
my $module_name = shift;
# For Unix systems:
$module_name =~ s!::!/!g;
# For Windows:
#$module_name =~ s!::!\\!g;
$module_name .= '.pm';
foreach my $path (@INC) {
next if (ref $path);
return "$path/$module_name" if (-f "$path/$module_name");
}
return '';
}
print find_installed_path('File::Find');
YMMV, but works with Linux and Perl 5.8.8.
UPDATE: @INC may contain references (to subroutines,
blessed objects, etc.), so added a check right at the beginning
of the foreach loop.
|