43
A
回答
66
是的,%INC
包含模塊加載的完整路徑。
例子:
$ perl -M'Data::Dump qw(pp)' -e 'pp(\%INC)'
{
"Data/Dump.pm" => "/usr/share/perl5/Data/Dump.pm",
"Exporter.pm" => "/usr/share/perl/5.10/Exporter.pm",
"List/Util.pm" => "/usr/lib/perl/5.10/List/Util.pm",
"Scalar/Util.pm" => "/usr/lib/perl/5.10/Scalar/Util.pm",
"XSLoader.pm" => "/usr/lib/perl/5.10/XSLoader.pm",
"overload.pm" => "/usr/share/perl/5.10/overload.pm",
"strict.pm" => "/usr/share/perl/5.10/strict.pm",
"vars.pm" => "/usr/share/perl/5.10/vars.pm",
"warnings.pm" => "/usr/share/perl/5.10/warnings.pm",
"warnings/register.pm" => "/usr/share/perl/5.10/warnings/register.pm",
}
1
從我發現,PERL將查找路徑內的目錄:
perl -le 'print foreach @INC'
然後,它會看在標準庫,然後在當前目錄中。
這給你一個搜索順序。
我來源:
3
有相當數量的CPAN模塊找到這個信息的,最有可能的候選人看起來是模塊::查找,模塊::其中,和模塊: :定位。我可能會用模塊去::定位:
use strict;
use warnings;
use Module::Locate qw/locate/;
my $to_find = "Some::Module";
print "Perl would use: ", scalar locate($to_find), "\n";
在列表上下文中找到返回一些::模塊的所有副本發現基於@INC秩序。
編輯: derobert suggests a much better way,哪知%INC已經辦完了...這是一個基於模塊的解決方案仍然是有用的,如果你想加載它打算從加載的模塊之前就知道了。
0
Module::Mapper提供一種方式來走@INC樹查找模塊:
perl -MModule::Mapper -MData::Dumper \
-e 'print Dumper(find_sources(UseINC => 1, Modules => [ @ARGV ]))' \
list-of-modules-to-locate
5
要在%INC
變量,它記錄它加載的文件名查找您加載的庫爲do
,require
或use
。有關詳細信息,請參閱perlvar。
7
如果模塊POD文檔,如果你能保證在路徑中的perldoc實用工具屬於運行腳本相同的Perl,那麼這個命令會經常給你的實際文件被人發現:
perldoc -l ModuleName
3
這裏是一個一行(有一個bash包裝),以確定是否安裝一個模塊 - 以及它會從被加載:
:#!/bin/bash
perl -M${1} -le "\$mname=\"${1}.pm\";\$mname=~s#::#/#g;print \"$1 INSTALLED AT \$INC{\$mname}\";" 2>/dev/null || echo "${1} NOT INSTALLED"
Perl的模塊名語法調用它
./find_perl_module Font::Metrics::Courier
6
perl -M'LWP'-e'use Data :: Dumper;打印Dumper \%INC'| grep LWP
這將列出磁盤上的LWP模塊位置,並列出LWP內部加載的模塊。
'LWP.pm' => '/usr/lib/perl5/5.10.0/LWP.pm',
'LWP/Protocol.pm' => '/usr/lib/perl5/5.10.0/LWP/Protocol.pm',
'LWP/UserAgent.pm' => '/usr/lib/perl5/5.10.0/LWP/UserAgent.pm',
0
您可以使用instmodsh命令:http://perldoc.perl.org/instmodsh.html。
0
我使用shell腳本在/ usr/local/bin目錄/ which_perl_module
#!/bin/sh
if [ ! $1 ];then echo "Which perl module should I look for?"; exit; fi
echo -n "You are using: "
perldoc -l $1
echo "which I found by looking in:"
perl -MData::Dump=pp -e 'unshift @INC, '$1'; pp(\@INC)'
相關問題
- 1. 如何查找perl模塊
- 2. 在加載時查找Perl模塊的路徑
- 3. 查找未使用的「use'd」Perl模塊
- 4. 如何查找Perl腳本使用的所有模塊?
- 5. 如何使用XSLoader查找Perl模塊的源代碼?
- 6. 如何使用模塊加載插件
- 7. 如何卸載Perl模塊?
- 8. Perl和編譯時模塊加載
- 9. openshift perl模塊加載
- 10. 動態加載Perl模塊
- 11. 如何使用perl模塊?
- 12. Perl:僅查找「純perl」模塊
- 13. 如何使用CodeIgniter在HMVC上的模塊文件夾之外加載模塊?
- 14. Nodejs模塊查找文件?
- 15. 如何在運行時加載Perl模塊?
- 16. 加載文檔時加載Joomla模塊
- 17. 如何使用模塊re在文件中查找關鍵字
- 18. 使用模塊名稱加載模塊而不是文件名
- 19. 如何從perl模塊打開文件
- 20. 如何使用環境模塊文件(tcl腳本)加載virtualenv?
- 21. 如何使用c#從.bas文件加載excel宏模塊?
- 22. 如何使用Perl中的Graph :: easy模塊處理XML文件
- 23. 如何在使用perl模塊時將參數傳遞給perl模塊?
- 24. 的PostgreSQL無法加載的perl模塊
- 25. 如何靜態查找動態加載的模塊
- 26. Perl:檢查你的文件是否作爲模塊加載或直接運行
- 27. 的Perl:在飛行中加載模塊
- 28. 如何使用TypeScript加載System.js模塊?
- 29. 如何使用Java加載模塊
- 30. 模塊加載如何使用TypeScript
你學到新的東西每天。 – 2008-12-04 19:46:00