Q. Quick question - What command I need to use to list all installed perl modules on my Linux / UNIX system?
A. You need to use instmodsh (interactive inventory for installed Perl modules) command to find out what modules already installed on my system.
instmodsh command provides an interactive shell type interface to query details of locally installed Perl modules. It is a little interface to ExtUtils::Installed to examine locally* installed modules, validate your packlists and even create a tarball from an installed module.
Task: List installed perl module
To display the list enter the following command:
$ instmodsh
Output:
Available commands are: l - List all installed modules m - Select a module q - Quit the program cmd?
At cmd? prompt type l to list all installed modules:
cmd? l
Output:
Installed modules are: Archive::Tar CPAN Class::Spiffy Compress::Zlib Cwd Digest::SHA IO::Zlib MIME::Lite Module::Build Module::Signature Net::Telnet PAR::Dist Perl Spiffy Term::ReadLine Test::Base Test::Simple Text::Glob Weather::Com XML::Simple YAML cmd?
This command itself is a perl script that use ExtUtils::Installed module. Try following command to see its source code:
$ vi $(which instmodsh)
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- My 10 UNIX Command Line Mistakes
- 10 Greatest Open Source Software Of 2009
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Linux Video Editor Software
- Email FAQ to a friend
- Download PDF version
- Printable version
- Comment RSS feed
- Last Updated: 05/25/08



{ 15 comments… read them below or add one }
Thanks, helpful tool.
While looking for how to do this I also came across this as an option:
$ perldoc perllocal
Will print out all your installed modules as well as when they were installed and where as well as a couple of other bits of info. You can direct the output to a file as well which is handy.
Thanks, it’s useful for me too.
enter
m Perl
then enter an f
to see details of perl packages.
Thnx
Use the following command on Unix/Linux to find Perl moduls installed
on your system:
find `perl -e ‘print “@INC”‘ ` -name ‘*.pm’ -print > all_modsOnSys
Hi Friend,
syntax error at -e line 1, near “.”
Execution of -e aborted due to compilation errors.
find: path-list predicate-list
Pls update. Ashok1729 :-)( Don’t give ur knowledge to others, just share it.
syntax error at -e line 1, near “.”
Execution of -e aborted due to compilation errors.
find: path-list predicate-list
above poster is a noob:
find `perl -e ‘print “@INC”‘` -name ‘*.pm’ -print | tee ~/Perl-modules-installed.txt
Or better yet:
find `perl -e 'print "@INC"'` -name '*.pm' -print | tee ~/Perl-modules-installed.txt(Hopefully the above appears in a more copy and paste friendly format)
to have * all* modules listed, a minor modification is required:
find `perl -e '{print join $/, grep {/[^.]/} @INC}'` -name '*pm' 2>/dev/null
to have * all* modules listed, a minor modification is required:
find -L `perl -e '{print join $/, grep {/[^.]/} @INC}'` -name '*pm' 2>/dev/null
sorry, the -L was accidentally missing from my post . It is required for find to raverse symlinks, and Perl 5.8.8. is such
find -L `perl -e '{print join $/, grep {/[^.]/} @INC}’` -name ‘*pm’ 2>/dev/null
I banged up a quick script to list them when i came across this issue a while back:
use ExtUtils::Installed;
my $Inst = ExtUtils::Installed->new();
my @Modules = $Inst->modules();
print "Current List of Installed PERL Modules:\n\n";
foreach my $mod(@Modules){
print "$mod\n";
}
@serguei wrote (11):
find -L `perl -e '{print join $/, grep {/[^.]/} @INC}’` -name ‘*pm’ 2>/dev/nullso I tried it and got an error:
>]/usr/bin]>find -L `perl -e '{print join $/, grep {/[^.]/} @INC}` -name *pm 2>/dev/ null -bash: command substitution: line 1: unexpected EOF while looking for matching `'' -bash: command substitution: line 2: syntax error: unexpected end of file >BUT (9):
find `perl -e '{print join $/, grep {/[^.]/} @INC}'` -name '*pm' 2>/dev/nullworks
The -L option at comment (10) doesnt:
find -L `perl -e ‘{print join $/, grep {/[^.]/} @INC}’` -name ‘*pm’ 2>/dev/null
AlmostDaly wrote (12):
use ExtUtils::Installed; my $Inst = ExtUtils::Installed->new(); my @Modules = $Inst->modules(); print "Current List of Installed PERL Modules:\n\n"; foreach my $mod(@Modules){ print "$mod\n"; }That’s fine if you have the ExtUtils CPAN module installed as standard. But can we assume this is always present?
Not assuming… but install it. Why wouldn’t you, its hardly ideal to run these long commands when you can alias a script to list them…
Hello All,
None of the above helped me. I tried copy paste but no luck. I probably don’t need to do any of the above.
I just need to find out if Gtk is installed on my system(Mac Leopard), I tried using Gtk in but it can’t find anything called Gtk…please help,
Thanks,
LisPerlati