#!/import/archperf/ws/devtools/4/amd64/bin/perl
eval 'exec /import/archperf/ws/devtools/4/amd64/bin/perl -S $0 ${1+"$@"}'
if $running_under_some_shell;
use vars qw($Inst @Modules);
instmodsh - A shell to examine installed modules
A little interface to ExtUtils::Installed to examine installed modules,
validate your packlists and even create a tarball from an installed module.
f [all|prog|doc] - List installed files of a given type
d [all|prog|doc] - List the directories used by a module
v - Validate the .packlist - check for missing files
t <tarfile> - Create a tar archive of the module
v => \&validate_packlist,
my $reply = <STDIN>; chomp($reply);
my($cmd) = $reply =~ /^(\w)\b/;
if( $Module_Commands{$cmd} ) {
$Module_Commands{$cmd}->($reply, $module);
my($reply, $module) = @_;
my $class = (split(' ', $reply))[1];
$class = 'all' unless $class;
if (eval { @files = $Inst->files($module, $class); }) {
print("$class files in $module are:\n ",
join("\n ", @files), "\n");
my($reply, $module) = @_;
my $class = (split(' ', $reply))[1];
$class = 'all' unless $class;
if (eval { @dirs = $Inst->directories($module, $class); }) {
print("$class directories in $module are:\n ",
join("\n ", @dirs), "\n");
my($reply, $module) = @_;
my $file = (split(' ', $reply))[1];
if( !(defined $file and length $file) ) {
print "No tar file specified\n";
elsif( eval { require Archive::Tar } ) {
Archive::Tar->create_archive($file, 0, $Inst->files($module));
my($first, @rest) = $Inst->files($module);
system('tar', 'cvf', $file, $first);
system('tar', 'rvf', $file, $f);
print "Can't use tar\n" if $?;
my($reply, $module) = @_;
if (my @missing = $Inst->validate($module)) {
print("Files missing from $module are:\n ",
join("\n ", @missing), "\n");
print("$module has no missing files\n");
##############################################################################
l - List all installed modules
m <module> - Select a module
my $reply = <STDIN>; chomp($reply);
print("Installed modules are:\n ", join("\n ", @Modules), "\n");
do_module((split(' ', $reply))[1]);
###############################################################################
$Inst = ExtUtils::Installed->new();
@Modules = $Inst->modules();
###############################################################################