cpan コマンドでインストールしたモジュールを調べる
ExtUtils::Install, ExtUtils::Installed を使うと cpan コマンドでインストールしたモジュールについてあれやこれや調べる事が出来ます。
インストールされているモジュール一覧
perl -MExtUtils::Installed -le 'print join "\n" => sort ExtUtils::Installed->new->modules;'
特定のモジュール名が属する dist に含まれるファイル一覧
$ perl -MExtUtils::Installed -le 'print join "\n" => sort ExtUtils::Installed->new->files(shift @ARGV);' YAML::Syck /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/JSON/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Dumper/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Loader/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/Syck.bs /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/Syck.so /usr/share/man/man3/JSON::Syck.3pm /usr/share/man/man3/YAML::Syck.3pm
cpan コマンドでインストールしたモジュールの uninstall
$ perl -MExtUtils::Install -MExtUtils::Installed -e 'my $plist = ExtUtils::Installed->new->packlist(shift @ARGV); uninstall($plist->packlist_file, 1, 1) if ($plist);' YAML::Syck unlink /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/JSON/Syck.pm unlink /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Dumper/Syck.pm unlink /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Loader/Syck.pm unlink /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Syck.pm unlink /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/Syck.bs unlink /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/Syck.so unlink /usr/share/man/man3/JSON::Syck.3pm unlink /usr/share/man/man3/YAML::Syck.3pm unlink /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/.packlist
uninstall の第3引数が真ならば実際には実行しません。
また ExtUtils::Install::uninstall しても perllocal には残ったままです。
packlist ファイルの場所
$ perl -MExtUtils::Install -MExtUtils::Installed -le 'my $plist = ExtUtils::Installed->new->packlist(shift @ARGV); print $plist->packlist_file if ($plist);' YAML::Syck /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/.packlist
そして cat してみる
$ cat `perl -MExtUtils::Install -MExtUtils::Installed -le 'my $plist = ExtUtils::Installed->new->packlist(shift @ARGV); print $plist->packlist_file if ($plist);' YAML::Syck` /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/JSON/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Dumper/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Loader/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/YAML/Syck.pm /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/Syck.bs /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/YAML/Syck/Syck.so /usr/share/man/man3/JSON::Syck.3pm /usr/share/man/man3/YAML::Syck.3pm