インストールされたPerlモジュールのパスを名前で取得するにはどうすればよいTime::HiRes
ですか?
SGE Grid Engineシステムのさまざまなノードでperlスクリプトを実行する必要があるという理由だけで、これが必要です。場合によっては、他のユーザー名として実行することもあります。
CPAN.pmを使用して自分用のパッケージをインストールできますが、フォルダーにchmod666がないと他のユーザー用にインストールするのは簡単ではありません。
perl -MTime::HiRes -e 'print $INC{"Time/HiRes.pm"}'
またperldoc -l Time::HiRes
主に私perldoc
は場所を取得するために使用します:
$ perldoc -l Module
cpan
Perlに付属のツールを使用してモジュールの詳細を取得することもできます。
$ 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)
zefram@fysh.org
インストールしていないモジュールでも機能します。
$ 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)
jand@activestate.com
多分私はsvnのようなXMLオプションが必要だと思います。
注:このソリューションでは、ダウンロードする必要のある(自己作成の)ユーティリティの使用を提案しています。それは私が役立つと信じている機能を提供しますが、サードパーティのソリューションを最初にインストールすることはすべての人にとって選択肢ではありません。
インストールされたPerlモジュールをモジュール(パッケージ)名で検索し、オプションで偶発的な重複の検出など、それらに関する情報を報告whichpm
するクロスプラットフォームCLI(Linux、macOS、Window)を作成しました。
例
# 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
前提条件:Perl v5.4.50以降がインストールされているLinux、macOS、またはWindows 。
Node.jsまたはio.jsをインストールした状態で、次のようにパッケージをインストールします。
[sudo] npm install whichpm -g
whichpm
。chmod +x whichpm
ます。$PATH
などのフォルダにシンボリックリンクします。/usr/local/bin
/usr/bin
スクリプトで実際に使用されているモジュールを見つける必要がある場合は、perlデバッガM
コマンドを使用できます。
[ivan @ server〜] $ perl -d your_script.pl ..。 デバッグされたプログラムが終了しました。qを使用して終了するか、Rを使用して再起動します。 プログラム終了後の停止を回避するには、oinhibito_exitを使用します。 hq、h R、またはhoを使用して、追加情報を取得します。 DB M 'AutoLoader.pm' => '5.60 from /usr/lib/perl5/5.8.8/AutoLoader.pm' 'Carp.pm' => '1.04 from /usr/lib/perl5/5.8.8/Carp.pm' ..。
これは、同じ名前のモジュールが異なるフォルダーにある場合に役立ちます。
私はちょうど別のものを見つけます:http: //www.perlmonks.org/?node_id = 568730
#!/bin/sh
echo 'print map { sprintf( "%20s : %s\n", $_, $INC{$_} ) } sort keys %INC; print "\n'$1' version : $'$1'::VERSION\n\n"' | perl "-M$1"
スクリプトを実行すると、%INCのすべてが出力されます。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
Vモジュールを使うのが好きです。
libv-perl
CPANからインストールするか、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
最も簡単な方法は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 in
に。new
モジュールのフルパス名は、デバッガウィンドウのタイトルバーに表示されます。
便利な別のアプローチは、内のすべてのフォルダを検索することです$PERL5LIB
。
追加のソフトウェアをインストールせずにこれを実行できるようにする@Ivanの答えを拡張するために、以下はPerlのデバッガーを使用して特定のモジュールを検索します。
perl -de 'use <Module Name>;'
例えば:
perl -de 'use DBD::Oracle;'
出力:
Loading DB routines from perl5db.pl version 1.37
Editor support available.
Enter h or 'h h' for help, or 'man perldebug' for more help.
DBD::Oracle::CODE(0x27f81d8)(/usr/local/lib64/perl5/DBD/Oracle.pm:113):
113: $ENV{PERL_BADFREE} = 0;
DB<1> q
OSXでは、次のものを使用できます。
perl -e'print join( "\ n"、@ INC)'
結果はあなたのlibの場所になるはずです。
次に、このコードをPerlコードに追加します。
use lib '/your/folder/location/to/lib';
Perldoc-lは私のために働きます
perldoc -l "File::Find"
/opt/perl_32/lib/5.8.8/File/Find.pm