web-dev-qa-db-ja.com

Perlモジュールがインストールされている場所を確認するにはどうすればよいですか?

インストールされたPerlモジュールのパスを名前で取得するにはどうすればいいですか? Time::HiRes

SGE Grid Engineシステムの異なるノードでPerlスクリプトを実行する必要があるため、これが必要です。他のユーザー名で実行することもあります。

CPAN.pmを使用して自分でパッケージをインストールできますが、フォルダーにchmod 666がなければ、他のユーザーにインストールするのはそれほど簡単ではありません。

41
Galaxy

whichpm 、aクロスプラットフォームCLI(Linux、 OSX、Window)インストールされたPerlモジュールをモジュール(パッケージ)名で検索し、オプションで、偶発的な重複の検出を含むそれらに関する情報を報告します。

# Locate the Data::Dumper module.
$ whichpm Data::Dumper
/usr/lib/Perl/5.18/Data/Dumper.pm

# Locate the Data::Dumper module, and also print
# version information and core-module status.
$ whichpm -v Data::Dumper
Data::Dumper    2.145   core>=5.005 /usr/lib/Perl/5.18/Data/Dumper.pm

# Locate the Data::Dumper module and open it in your system's default text
# editor.
$ whichpm -e Data::Dumper

# Look for accidental duplicates of the Foo::Bar module.
# Normally, only 1 path should be returned.
$ whichpm -a Foo::Bar
/usr/lib/Perl/5.18/Foo/Bar.pm
./Foo/Bar.pm

# Print the paths of all installed modules.
$ whichpm -a

Installation

前提条件:Linux[〜#〜] osx [〜#〜]、またはWindowsPerl v5.4.50以降がインストールされている。

Npmレジストリからのインストール

Node.js または io.js がインストールされている場合、次のように パッケージ をインストールします。

[Sudo] npm install whichpm -g

手動インストール(OSXおよびLinux)

  • CLI as whichpmをダウンロードします。
  • chmod +x whichpmで実行可能にします。
  • $PATH(OSX)や/usr/local/bin(Linux)など、/usr/bin内のフォルダーに移動またはシンボリックリンクします。
17
mklement0

Perl -MTime::HiRes -e 'print $INC{"Time/HiRes.pm"}'またはperldoc -l Time::HiRes

73
jrockway

Perlに付属のcpanツールを使用して、モジュールの詳細を取得できます。

$ cpan -D Time::HiRes
Time::HiRes
-------------------------------------------------------------------------
    High resolution time, sleep, and alarm
    J/JH/JHI/Time-HiRes-1.9719.tar.gz
    /usr/local/perls/Perl-5.10.0/lib/5.10.0/darwin-2level/Time/HiRes.pm
    Installed: 1.9711
    CPAN:      1.9719  Not up to date
    Andrew Main (Zefram) (ZEFRAM)
    [email protected]

インストールしていないモジュールでも動作します:

$ cpan -D Win32::Process
Win32::Process
-------------------------------------------------------------------------
    Interface to Win32 Process functions
    J/JD/JDB/Win32-Process-0.14.tar.gz
    Installed: 
    CPAN:      0.14  Not up to date
    Jan Dubois (JDB)
    [email protected]

たぶん、svnのようなXMLオプションが必要だと思います。

21
brian d foy

スクリプトで実際に使用されているモジュールを見つける必要がある場合は、PerlデバッガーMコマンドを使用できます。

 [ivan @ server〜] $ Perl -d your_script.pl 
 ... 
 
デバッグされたプログラムは終了しました。 qを使用して終了するか、Rを使用して再起動します。
 o prevent_exitを使用してプログラム終了後の停止を回避します。
 hq、h Rまたはhoを使用して追加情報を取得します。
 
 DB M
 'AutoLoader.pm' => '5.60 /usr/lib/Perl5/5.8.8/AutoLoader.pm'から
 'Carp.pm' => '1.04/usr/lib /からPerl5/5.8.8/Carp.pm '
 ... 

これは、同じ名前のモジュールが異なるフォルダーにある場合に役立ちます。

5
Ivan Nevostruev

私は別のものを見つけました: http://www.perlmonks.org/?node_id=5687

#!/bin/sh

echo 'print map { sprintf( "%20s : %s\n", $_, $INC{$_} ) } sort keys %INC; print "\n'$1' version : $'$1'::VERSION\n\n"' | Perl "-M$1" 

このスクリプトは、Perl -MSTH::STH

例えば:

$ whichpm CGI       
              CGI.pm : /System/Library/Perl/5.8.6/CGI.pm
         CGI/Util.pm : /System/Library/Perl/5.8.6/CGI/Util.pm
             Carp.pm : /System/Library/Perl/5.8.6/Carp.pm
         Exporter.pm : /System/Library/Perl/5.8.6/Exporter.pm
         constant.pm : /System/Library/Perl/5.8.6/constant.pm
         overload.pm : /System/Library/Perl/5.8.6/overload.pm
           strict.pm : /System/Library/Perl/5.8.6/strict.pm
             vars.pm : /System/Library/Perl/5.8.6/vars.pm
         warnings.pm : /System/Library/Perl/5.8.6/warnings.pm warnings/register.pm : /System/Library/Perl/5.8.6/warnings/register.pm

CGI version : 3.05
4
Galaxy

[〜#〜] v [〜#〜] モジュールを使用するのが好きです。

CPANからインストールするか、パッケージlibv-Perl DebianまたはUbuntu。

次に、次のように使用します。

$ Perl -MV=DBI
DBI
    /Users/michiel/.plenv/versions/5.24.0/lib/Perl5/site_Perl/5.24.0/darwin-2level/DBI.pm: 1.636

その他の出力例:

$ Perl -MV=Time::HiRes
Time::HiRes
    /usr/lib/Perl/5.18/Time/HiRes.pm: 1.9725
3
MichielB

最も簡単な方法はperldoc -l Time::HiResのようです。


何らかの理由でそれが利用できない場合、実際的な解決策は次のとおりです。

ステップ1:スクリプトでモジュールをインスタンス化します...

#! /usr/bin/Perl -w
use Time::HiRes();
new Time::HiRes();

ステップ2:Perlグラフィカルデバッガーでスクリプトを実行...

export Perl5LIB=$Perl5LIB:~/Perl ## tell Perl where to look for "Devel"/"ptkdb.pm"
Perl -d:ptkdb (yourscript.pl)

ステップ3:Step innew呼び出しに。

モジュールのフルパス名は、デバッガウィンドウのタイトルバーに表示されます。


役に立つかもしれない別のアプローチは、$Perl5LIB内のすべてのフォルダーを検索することです。

1
nobar