설치된 PERL 모듈의 버전을 어떻게 찾을 수 있습니까?
문제
설치된 PERL 모듈의 버전을 어떻게 찾습니까?
이것은 맨 아래의 답변에 있지만, 나는 여기서 살기에 충분히 중요하다고 생각합니다. 이러한 제안으로 나는 내에서 함수를 만듭니다. .bashrc
function perlmodver {
perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . \
" is installed.\n"' $1
}
해결책
모듈의 버전을 얻으려고하는 이유는 무엇입니까? 프로그램 내에서 이것을 필요로합니까, 다른 작업으로 전달하려면 번호 만 있으면 되나요, 아니면 자신이 가진 것을 알아 내려고합니까?
나는 이것을 내장했다 cpan
(Perl과 함께 제공) -D
설치 한 버전과 CPAN의 현재 버전을 볼 수 있도록 전환하십시오.
$ cpan -D Text::CSV_XS Text::CSV_XS ------------------------------------------------------------------------- Fast 8bit clean version of Text::CSV H/HM/HMBRAND/Text-CSV_XS-0.54.tgz /usr/local/lib/perl5/site_perl/5.8.8/darwin-2level/Text/CSV_XS.pm Installed: 0.32 CPAN: 0.54 Not up to date H.Merijn Brand (HMBRAND) h.m.brand@xs4all.nl
모든 오래된 모듈을 보려면 -O
(자본 O) 스위치 :
$ cpan -O Module Name Local CPAN ------------------------------------------------------------------------- Apache::DB 0.1300 0.1400 Apache::SOAP 0.0000 0.7100 Apache::Session 1.8300 1.8700 Apache::SizeLimit 0.0300 0.9100 Apache::XMLRPC::Lite 0.0000 0.7100 ... and so on
설치 한 모든 모듈에 대해 이것을보고 싶다면 -a
자가 펀들을 만들려면 전환하십시오.
다른 팁
대부분의 모듈 (특히 CPAN의 모듈)에는 $ 버전 변수가 있습니다.
perl -MSome::Module -le 'print $Some::Module::VERSION'
버전은 a입니다 만능인 모든 Perl 클래스의 방법. 모듈 버전을 얻는 데 사용할 수 있습니다 (일반적으로 설정 한 경우).
다음은 모듈 이름을 한 번만 추가 해야하는 하나의 라이너입니다.
perl -le 'eval "require $ARGV[0]" and print $ARGV[0]->VERSION' Some::Module
모듈이 버전 번호로 유닉스 타임 스탬프와 같은 미친 짓이없는 경우 작동하는 트릭이 적습니다.
perl -MFoo::Bar\ 9999
이것은 IS로 번역하기 때문에 작동합니다
use Foo::Bar 9999;
즉, 최소 9999 또는 최신 버전 인 Foo :: Bar의 버전. 그리고 당신이 얻는 것은입니다
Foo::Bar version 9999 required--this is only version 1.1.
BEGIN failed--compilation aborted.
(Matt Trout에서 배운 깔끔한 트릭.)
운이 좋으면 모듈에 이름이 지정된 패키지 변수가 있습니다. $ 버전:
$ perl -MCPAN -e 'print "$CPAN::VERSION\n"'
1.9205
이는 모듈이 CPAN에 배포되는 데 필요하지만 내부적으로 개발 된 모듈은 다른 컨벤션을 따라갈 수 있습니다.
답변 주셔서 감사합니다! .bashrc에서 함수를 만들어 Perl 모듈의 버전을 쉽게 찾을 수 있습니다.
function perlmodver {
perl -M$1 -e 'print $ARGV[0]->VERSION . "\n"' $1
}
확인하십시오 pmtools CPAN의 스크립트. 데비안 (기반) 배포판을 사용하는 경우 편리한 것도 있습니다. pmtools 패키지. 여기에는 모듈 버전을 알려주는 스크립트 "PMVers"가 포함됩니다. 꽤 편리합니다.
그것은 여러 One-Liners 사람들과 비슷한 일을하지만 오류 처리에 대해 약간 더 똑똑하며 한 번에 하나 이상의 모듈 버전을 제공 할 수 있습니다.
나는 다음을보고하기 위해 작은 대본을 썼습니다. 펄버.
이것은 설치 한 모듈 버전과 .pm 파일이있는 위치를 알려주는 간단한 작은 도구입니다. 또한 모듈을 성공적으로로드 할 수 있습니다. 자동으로 '-', '/'또는 ''to '::'이므로 표준 모듈 이름 대신 PathName 또는 배포 이름을 사용할 수 있습니다.
모듈이 $ 버전을 정의한다고 가정합니다. 모듈이 $ 버전을 정의하지 않으면 여전히 .pm
파일은 수동으로 검사 할 수 있습니다. 한 번에 여러 모듈을 확인할 수도 있습니다.
$ perlver CPAN DBD-Pg Getopt::Long
CPAN 1.7602 is
/usr/lib/perl5/5.8.8/CPAN.pm
DBD::Pg 1.49 is
/usr/lib/perl5/vendor_perl/5.8.8/i686-linux/DBD/Pg.pm
Getopt::Long 2.36 is
/usr/lib/perl5/vendor_perl/5.8.8/Getopt/Long.pm
가장 쉽게 기억하고 나에게 가장 강력한 버전 :
perl -e 'use Search::Elasticsearch; print $Search::Elasticsearch::VERSION;'
또한 Expler.pm을 사용하는 모듈의 경우이 트릭 으로이 정보를 얻을 수 있습니다.
perl -MSome::Module=99999 -ex
Some::Module version 99999 required--this is only version 1.9205 at ...
Exporter.pm을 사용하지 않는 모듈의 경우 약간 더 긴 트릭이 동일한 정보를보고합니다.
perl -e'use Some::Module 99999'
Some::Module version 99999 required--this is only version 1.9205 at ...
우리는 Solaris 10에 시스템 Perl (/usr/bin/perl)을 가지고 있으며, 위의 솔루션은 쓸모가 없습니다. 그들 중 일부는 "module.pm이 설치되지 않았다"고보고하고 일부는 출력이 없습니다.
다음은 유용한 코드가 있으며 모든 모듈과 해당 버전을 나열 할 수 있습니다.
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my @modules;
my $installed = ExtUtils::Installed->new();
if (scalar(@ARGV) > 0) {
@modules = @ARGV;
} else {
@modules = $installed->modules();
}
print "Module\tVersion\n";
foreach (@modules) {
print $_ . "\t" . $installed->version($_) . "\n";
}
당신은 또한 살펴볼 수 있습니다 앱 :: module :: 버전
$ module-version
The version of App::module::version in /home/yourself/perl5/lib/perl5 is 1.004