A script for searching @INC for particular modules. If you don't pass it any parameters, it will list all modules it can find in alphabetical order. Handy for seeing just what you have installed. #!/usr/bin/perl ################################################################################ # $Id: pmsearch.pl 75 2010-04-09 17:58:38Z v89326 $ # $URL: file:///S:/svn/utilities/trunk/pmsearch.pl $ ################################################################################ # # Title: pmsearch # Author: Kurt Kincaid # VERSION: 0.0.2 # ################################################################################ use strict; use File::Find; $| = 1; our ( %mods, $pattern ); chomp @ARGV; my @mods = perlMods( $ARGV[ 0 ] ); foreach my $mod ( @mods ) { print $mod, "\n"; } sub perlMods { $pattern = shift || "."; $pattern =~ s/::/\//g; foreach my $startDir ( @INC ) { $main::startDir = $startDir; find( \&modFind, $startDir ); } my @mods = sort { lc( $a ) cmp lc( $b ) } keys %mods; chomp @mods; return @mods; } sub modFind { if ( -d && /^[a-z]/ ) { $File::Find::prune = 1; return; } local $_ = $File::Find::name; return unless $_ =~ /\.pm$/; my $tmpname; ( $tmpname = $_ ) =~ s{^\Q$main::startDir/}{}; return unless $tmpname =~ /$pattern/; $tmpname =~ s/\.pm$//; $tmpname =~ s{/}{::}g; $mods{ $tmpname } = 1; return 1; } ################################################################################ # EOF |
Perl Code >