#!/usr/bin/perl -s ## ## Pev -- Perl extension version. ## ## Reports the installation status and version of a Perl Extension Module (.pm) ## Usage: pev modulename ## Example: pev ExtUtils::MakeMaker ## Example: pev -v ExtUtils::MakeMaker ## ## Copyright (c) 1999, Vipul Ved Prakash. All rights reserved. ## This code is free software; you can redistribute it and/or modify ## it under the same terms as Perl itself. ## ## $Id$ use Data::Dumper; my $class = shift || die "syntax: pev modulename\n"; $module = $class; $module =~ s#::#/#g; $module = "$module.pm"; eval { require $module } || die "$class not installed.\n"; eval { $version = $class->VERSION } || print "Version information not available for "; print "$class $version\n"; if ( $v ) { my $file = $INC{$module}; print "\n"; print "Filename\n\t$file\n"; open PM, $file || die $!; my @PM = ; close PM; $proc = depends_on ( \@PM ); $"="\n\t"; print "Dependencies\n\t@$proc\n"; $auth = author ( \@PM ); print "Author\n\t$auth\n"; } sub depends_on { my ( $code ) = @_; my @mods; grep { s/^\s*(?:require|use)\s+(\S+)\s*;\s*$/$1/i && push @mods, $1 } @$code; return \@mods; } sub author { my ( $code ) = @_; my $codestr = join '', @$code; my ( $author ) = $codestr =~ m/^\=head1\s+AUTHOR\s*\n\s*\n(.*?)\n/ims; $author = "Author name not available." unless $author; $author =~ s/^\s*//; return $author; } "True Value";