試すことは別として
perldoc <module name>
私の空想やファイルシステムを調べてディレクトリを見るCPANモジュールごとに個別にインストールしたモジュールがわかりません。
インストールされているすべてのCPANモジュールの大きなリストを取得する最も簡単な方法は何ですか?コマンドラインなどから。
これはPerl FAQで回答されています。この答えはperldoc -q installed
ですぐに見つけることができます。つまり、ExtUtils::Installed
またはFile::Find
を使用することになります。これらの両方のバリアントは、このスレッドで以前に説明しました。
FAQエントリも見つけることができます 「システムにインストールされているモジュールを見つけるにはどうすればよいですか?」 perlfaq3。 perlfaq を見ると、すべてのFAQ回答のリストを見ることができます。
perldoc perllocal
編集: CPAN FAQ に、それに関する(少し)詳細な情報があります。
perldoc -q installed
cpan -l
がトリックを行うと主張していますが、それは私にとってはうまくいきません。他のオプション:
cpan -a
インストールされているパッケージのNiceリストを吐き出し、それらをファイルに書き込むという素晴らしい副作用があります。
Perldoc perllocalは、CPAN経由でインストールされたモジュールについてのみレポートすることに注意してください。誰かがモジュールを手動でインストールした場合、それらは見つかりません。また、複数の人がモジュールをインストールしていて、perllocal.podがソース管理下にある場合、人は競合を誤って解決し、リストを破損する可能性があります(たとえば、職場でこれが発生しました)。
残念ながら、ソリューションはFile :: Findまたは類似のもので@INCを歩いているようです。ただし、モジュールを見つけるだけでなく、ディストリビューション内の関連モジュールも見つけます。たとえば、Test :: Harnessの実際のディストリビューション名に加えて、TAP :: HarnessおよびTAP :: Parserを報告します(バージョン3以降を使用している場合)。それらをディストリビューション名と一致させる可能性があり、一致しない名前を破棄できますが、ローカルに構築およびインストールされたモジュールを破棄する可能性があります。
ブライアン・d・フォイのバックパンのインデックス作成作業には、.pmファイルで渡すコードが含まれていると考えられており、ディストリビューションを推測しようとしますが、パッケージ内のものが必ずしもインストールされていないため、これでも失敗することがあります(Devel :: Coverを参照してください:: Inc for example)。
ExtUtils-Installed を試すことができますが、それは.packlist
sのみを見るので、人々が@INC
に手で移動したモジュールを見逃す可能性があります。
私は App-Module-Lister を、非シェルWebホスティングアカウントでCGIスクリプトとしてこれを実行したい友人のために書きました。モジュールファイルを取得し、サーバーがCGIスクリプトとして扱うファイル名としてアップロードします。標準ライブラリ以外の依存関係はありません。そのまま使用するか、コードを盗みます。
モジュールとそのバージョンのリストを出力します:
Tie :: Cycle 1.15 Tie :: IxHash 1.21 Tie :: Toggle 1.07 Tie :: ToObject 0.03 Time :: CTime 99.062201 Time :: DaysInMonth 99.1117 Time :: Epoch 0.02 Time :: Fuzzy 0.34 Time :: JulianDay 2003.1125 Time :: ParseDate 2006.0814 Time :: Timezone 2006.0814
これをcpan
ツールの機能として追加するつもりだったので、私もそれを行います。 [時間の経過]そして、今、cpan
に-l
スイッチがあります。リリースする前に他にもいくつかのことがありますが、 githubにあります です。それを待ちたくない場合は、-a
スイッチを試してオートバンドルを作成することができますが、これによりリストの周りにポッドが配置されます。
幸運を;
$ for M in `perldoc -t perllocal|grep Module |sed -e 's/^.*" //'`; do V=`perldoc -t perllocal|awk "/$M/{y=1;next}y" |grep VERSION |head -n 1`; printf "%30s %s\n" "$M" "$V"; done |sort
Class::Inspector * "VERSION: 1.28"
Crypt::CBC * "VERSION: 2.33"
Crypt::Rijndael * "VERSION: 1.11"
Data::Dump * "VERSION: 1.22"
DBD::Oracle * "VERSION: 1.68"
DBI * "VERSION: 1.630"
Digest::SHA * "VERSION: 5.92"
ExtUtils::MakeMaker * "VERSION: 6.84"
install * "VERSION: 6.84"
IO::SessionData * "VERSION: 1.03"
IO::Socket::SSL * "VERSION: 2.016"
JSON * "VERSION: 2.90"
MIME::Base64 * "VERSION: 3.14"
MIME::Base64 * "VERSION: 3.14"
Mozilla::CA * "VERSION: 20141217"
Net::SSLeay * "VERSION: 1.68"
parent * "VERSION: 0.228"
REST::Client * "VERSION: 271"
SOAP::Lite * "VERSION: 1.08"
Task::Weaken * "VERSION: 1.04"
Term::ReadKey * "VERSION: 2.31"
Test::Manifest * "VERSION: 1.23"
Test::Simple * "VERSION: 1.001002"
Text::CSV_XS * "VERSION: 1.16"
Try::Tiny * "VERSION: 0.22"
XML::LibXML * "VERSION: 2.0108"
XML::NamespaceSupport * "VERSION: 1.11"
XML::SAX::Base * "VERSION: 1.08"
トリックを実行するスクリプトを次に示します。
use ExtUtils::Installed;
my $inst = ExtUtils::Installed->new();
my @modules = $inst->modules();
foreach $module (@modules){
print $module ." - ". $inst->version($module). "\n";
}
=head1 ABOUT
This scripts lists installed cpan modules using the ExtUtils modules
=head1 FORMAT
Prints each module in the following format
<name> - <version>
=cut
これにはCPANの 'r'コマンドを使用します。古いスタイルでCPANシェルにアクセスできます。
Sudo Perl -MCPAN -e Shell
または、ほとんどの新しいシステムには「cpan」コマンドがあるため、このコマンドでシェルにアクセスできます。
Sudo cpan
(通常、「sudo」を使用してrootとして実行するか、「su-」を使用して実行する前にrootになる必要があります。ただし、通常のユーザーとして実行できるようにcpanを設定し、rootとしてインストールします。このマシンにルートがない場合でも、CPANシェルを使用してこの情報を確認できますが、モジュールをインストールすることはできず、初めてセットアップを行う必要がある場合がありますそれを実行します。)
次に、cpanシェルを開いたら、「r」コマンドを使用して、インストールされているすべてのモジュールとそのバージョンを報告できます。そのため、「cpan>」プロンプトで「r」と入力します。これにより、インストールされているすべてのモジュールとそのバージョンが一覧表示されます。つかいます '?'さらに助けを得るために。
* nixでそれを行うための本当にハックな方法があります、あなたはあなたが本当に気にしないものを手に入れるでしょう(すなわち:warnings :: register etc)、しかしそれはあなたにアクセスできるすべての.pmファイルのリストを与えるべきですPerl。
for my $path (@INC) {
my @list = `ls -R $path/**/*.pm`;
for (@list) {
s/$path\///g;
s/\//::/g;
s/\.pm$//g;
print;
}
}
ターミナルでinstmodsh
コマンドを使用すると、システムにインストールされているPerlモジュールのリストを取得できます。出力を強化するために、次の3つのオプションが要求されます。
l - List all installed modules
m <module> - Select a module
q - Quit the program
Perl -MFile::Find=find -MFile::Spec::Functions -Tlwe 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC'
man perllocal
またはperldoc perllocal
を試してください。
次のコマンドを試してください
instmodsh
Linux/Unixでは、次の簡単なコマンドを使用します。
Perl -e 'print qx/find $_ -name "*.pm"/ foreach ( @INC );'
@INC
内のすべてのフォルダーをスキャンし、*。pmファイルを探します。
Ls(1)などの外部プログラムを使用せずに@INCディレクトリツリーをウォークスルーするには、Nice宣言インターフェイスを備えたFile::Find::Rule
モジュールを使用できます。
また、以前のPerlバージョンに同じモジュールが含まれている場合に備えて、重複を除外する必要があります。これを行うコードは次のようになります。
#! /usr/bin/Perl -l
use strict;
use warnings;
use File::Find::Rule;
my %seen;
for my $path (@INC) {
for my $file (File::Find::Rule->name('*.pm')->in($path)) {
my $module = substr($file, length($path)+1);
$module =~ s/.pm$//;
$module =~ s{[\\/]}{::}g;
print $module unless $seen{$module}++;
}
}
実行の最後には、すべてのモジュール名がキーとして%seenハッシュに含まれています。コードは、正規のファイル名($ fileで指定)を、表示回数の代わりにキーの値として保存するように適合させることができます。
ちょうど昨日、まさにこれを行うためにPerlスクリプトを書きました。このスクリプトは、区切り文字として「::」を使用して、@ INCにインストールされているPerlモジュールのリストを返します。 -を使用してスクリプトを呼び出します
Perl perlmod.pl
OR
Perl perlmod.pl <module name> #Case-insensitive(eg. Perl perlmod.pl ftp)
現在のところ、ソフトリンクの再帰に問題があるため、スクリプトは現在のディレクトリ( '。')をスキップしますが、17行目のgrep関数を変更することで含めることができます
grep { $_ !~ '^\.$' } @INC
ただ、
@INC
スクリプトは こちら にあります
インストールされたモジュールのリストを出力するPerlのワンライナーは次のとおりです。
Perl -MExtUtils::Installed -MData::Dumper -e 'my ($inst) = ExtUtils::Installed->new(); print Dumper($inst->modules());'
Data :: Dumperがインストールされていることを確認してください。
ここに、インストールされているすべての.pmファイルを一覧表示する別のコマンドラインツールがあります。
正規表現に一致するインストール済みPerlモジュールを見つける
Perlスクリプトを入力すると、@ INCのフォルダーの下に.pmファイルとしてインストールされたすべてのモジュールがあるので、小さなbashスクリプトがあなたのために仕事をします:
#!/bin/bash
echo -e -n "Content-type: text/plain\n\n"
inc=`Perl -e '$, = "\n"; print @INC;'`
for d in $inc
do
find $d -name '*.pm'
done
次は私のために働いた。
$ perldoc perllocal | grep Module
$ perldoc perllocal | grep -E 'VERSION|Module'
perlクックブックには、必要な処理を行うスクリプト「pmdesc」の反復がいくつか含まれています。 「Perl Cookbook pmdesc」をGoogleで検索すると、 他のQ&Aサイトの記事 、ネット上のいくつかのコードリスト、解決策の議論、さらには 一部の改良 =。
cd /the/lib/dir/of/your/Perl/installation
perldoc $(find . -name perllocal.pod)
Windowsユーザーは、Windowsエクスプローラー検索を実行するだけで検索できます。