#!/usr/bin/env perl
# pmpath -- show path to a perl module
# ------ pragmas
use strict;
use warnings;
our $VERSION = '1.50';
# ------ define variables
my $errors = 0; # error count
my $fullpath = undef; # full path
my $module = undef; # module name
my $shortpath = undef; # short path
BEGIN { $^W = 1 }
$errors = 0;
for $module (@ARGV) {
eval "local \$^W = 0; require $module";
if ($@) {
$@ =~ s/at \(eval.*$//;
warn "$0: $@";
$errors++;
next;
}
for ($shortpath = $module) {
s{::}{/}g;
s/$/.pm/;
}
# print "$module is in " if @ARGV > 1;
if (defined($fullpath = $INC{$shortpath})) {
print "$fullpath\n";
}
else {
$errors++;
warn "$0: path unavailable in %INC\n";
}
}
exit ($errors != 0);
__END__
=head1 NAME
pmpath - show full path to a perl module
=head1 SYNOPSIS
pmpath module ...
=head1 DESCRIPTION
For each module name given as an argument, produces its full path on
the standard output, one per line.
=head1 EXAMPLES
$ pmpath CGI
/usr/local/devperl/lib/5.00554/CGI.pm
$ filsperl -S pmpath IO::Socket CGI::Carp
/usr/local/filsperl/lib/5.00554/i686-linux-thread/IO/Socket.pm
/usr/local/filsperl/lib/5.00554/CGI/Carp.pm
$ oldperl -S pmpath CGI CGI::Imagemap
/usr/lib/perl5/CGI.pm
/usr/lib/perl5/site_perl/CGI/Imagemap.pm
=head1 SEE ALSO
pmdesc(1),
pmvers(1),
pmcat(1).
=head1 AUTHORS and COPYRIGHTS
Copyright (C) 1999 Tom Christiansen.
Copyright (C) 2006-2013 Mark Leighton Fisher.
=head1 LICENSE
This is free software; you can redistribute it and/or modify it
under the terms of either:
(a) the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any
later version, or
(b) the Perl "Artistic License".
(This is the Perl 5 licensing scheme.)
Please note this is a change from the
original pmtools-1.00 (still available on CPAN),
as pmtools-1.00 were licensed only under the
Perl "Artistic License".