package Module::Install::Admin::Find; use Module::Install::Base; @ISA = qw(Module::Install::Base); $VERSION = '0.67'; use strict; use File::Find (); sub find_extensions { my $self = shift; $self->_top->find_extensions(@_); } sub find_in_inc { my ($self, $pkg) = @_; unless ($pkg =~ /\.pm$/) { $pkg =~ s!::!/!g; $pkg = "$pkg.pm"; } my @found; foreach my $inc (@INC) { next if $inc eq $self->_top->{prefix} or ref($inc); push @found, "$inc/$pkg" if -f "$inc/$pkg"; } wantarray ? @found : $found[0]; } sub glob_in_inc { my ($self, $pkg) = @_; unless ($pkg =~ /\.pm$/) { $pkg =~ s!::!/!g; $pkg = "$pkg.pm"; } my @found; foreach my $inc (@INC) { next if $inc eq $self->_top->{prefix} or ref($inc); push @found, [ do { my $p = $_; $p =~ s!^\Q$inc\E/!!; $p =~ s!/!::!g; $p =~ s!\.pm\Z!!gi; $p }, $_ ] for grep -e, glob("$inc/$pkg"); } wantarray ? @found : $found[0]; } sub find_files { my ($self, $file, $path) = @_; $path = '' if not defined $path; $file = "$path/$file" if length($path); if (-f $file) { return ($file); } elsif (-d $file) { my @files = (); local *DIR; opendir(DIR, $file) or die "Can't opendir $file"; while (my $new_file = readdir(DIR)) { next if $new_file =~ /^(\.|\.\.)$/; push @files, $self->find_files($new_file, $file); } return @files; } return (); } 1;