노력하는 것 말고
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
설치된 패키지의 멋진 목록을 뱉어 내고 파일에 쓰는 좋은 부작용이 있습니다.
답변
perldoc perllocal이 CPAN을 통해 설치된 모듈에 대해서만보고한다는 점은 주목할 가치가 있습니다. 누군가 수동으로 모듈을 설치하면 찾을 수 없습니다. 또한 여러 사람이 모듈을 설치하고 perllocal.pod가 소스 제어를받는 경우 사람들이 충돌을 잘못 해결하고 목록을 손상시킬 수 있습니다 (예를 들어 여기에서 발생했습니다).
유감스럽게도 솔루션은 File :: Find 또는 이와 유사한 것으로 @INC를 통해 걷는 것처럼 보입니다. 그러나 이는 모듈 만 찾는 것이 아니라 배포판에서 관련 모듈도 찾습니다. 예를 들어 Test :: Harness의 실제 배포 이름과 함께 TAP :: Harness 및 TAP :: Parser를보고합니다 (버전 3 이상이 있다고 가정). 잠재적으로 배포 이름과 일치시키고 일치하지 않는 이름을 버릴 수 있지만 로컬에서 빌드되고 설치된 모듈을 버릴 수 있습니다.
brian d foy의 backpan 인덱싱 작업에는 .pm 파일에 코드를 전달해야하며 배포를 유추하려고 시도하지만 패키지에있는 것이 반드시 설치되어 있지 않기 때문에 때때로 실패합니다 (Devel :: Cover 참조). :: Inc 예).
답변
$ 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"
답변
ExtUtils-Installed를 시도해 볼 수 있지만 .packlist
s 만 보이 므로 사람들 @INC
이 손 으로 물건을 옮긴 모듈을 놓칠 수 있습니다 .
내가 쓴 응용 프로그램 – 모듈 – 리스터를 비 쉘 웹 호스팅 계정에 CGI 스크립트로이 작업을 수행하고 싶어 친구. 모듈 파일을 가져 와서 서버가 CGI 스크립트로 취급 할 파일 이름으로 업로드하면됩니다. 표준 라이브러리 외부에는 종속성이 없습니다. 그대로 사용하거나 코드를 훔치십시오.
모듈 및 해당 버전 목록을 출력합니다.
타이 :: 사이클 1.15 타이 :: IxHash 1.21 타이 :: 토글 1.07 타이 :: ToObject 0.03 시간 :: CTime 99.062201 시간 :: DaysInMonth 99.1117 시간 :: 에포크 0.02 시간 :: 퍼지 0.34 시각 :: JulianDay 2003.1125 시간 :: ParseDate 2006.0814 시간 :: 시간대 2006.0814
이 기능을 cpan
도구 의 기능으로 추가하려고 했기 때문에 그렇게 할 것입니다. 지금은이, [시간 통과] 그리고 -l
에 스위치를 cpan
. 릴리스하기 전에 몇 가지 다른 작업이 있지만 github에 있습니다. 그것을 기다리지 않으려면 -a
목록에 Pod가 추가되지만 스위치를 사용하여 자동 번들을 만들 수 있습니다.
행운을 빕니다;
답변
트릭을 수행하는 스크립트는 다음과 같습니다.
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