比較perl模組的版本(轉)
比較perl模組的版本(轉)[@more@] #!/usr/local/bin/perl -w ########################################################################### # Global definitions ########################################################################### use diagnostics; use strict; use Devel::ptkdb; ########################################################################### # Check required module ########################################################################### # # Here we check for --MODULES-- # print "
Checking perl modules ...
"; unless (eval "require 5.005") { die "Sorry, you need at least Perl 5.005
"; } sub vers_cmp { if (@_ < 2) { die "not enough parameters for vers_cmp" } if (@_ > 2) { die "too many parameters for vers_cmp" } my ($a, $b) = @_; my (@A) = ($a =~ /(.|d+|[^.d]+)/g); my (@B) = ($b =~ /(.|d+|[^.d]+)/g); my ($A,$B); while (@A and @B) { $A = shift @A; $B = shift @B; if ($A eq "." and $B eq ".") { next; } elsif ( $A eq "." ) { return -1; } elsif ( $B eq "." ) { return 1; } elsif ($A =~ /^d+$/ and $B =~ /^d+$/) { return $A <=> $B if $A <=> $B; } else { $A = uc $A; $B = uc $B; return $A cmp $B if $A cmp $B; } } @A <=> @B; } # This was originally clipped from the libnet Makefile.PL, adapted here to # use the above vers_cmp routine for accurate version checking. sub have_vers { my ($pkg, $wanted) = @_; my ($msg, $vnum, $vstr); no strict 'refs'; printf("Checking for %15s %-9s ", $pkg, !$wanted?'(any)':"(v$wanted)"); eval { my $p; ($p = $pkg . ".pm") =~ s!::!/!g; require $p; }; $vnum = ${"${pkg}::VERSION"} || ${"${pkg}::Version"} || 0; $vnum = -1 if $@; if ($vnum eq "-1") { # string compare just in case it's non-numeric $vstr = "not found"; } elsif (vers_cmp($vnum,"0") > -1) { $vstr = "found v$vnum"; } else { $vstr = "found unknown version"; } my $vok = (vers_cmp($vnum,$wanted) > -1); print ((($vok) ? "ok: " : " "), "$vstr
"); return $vok; } # Check versions of dependencies. 0 for version = any version acceptible my $modules = [ { name => 'Getopt::Long', version => '' }, { name => 'File::Find', version => '' }, { name => 'File::Copy', version => '' }, { name => 'FileHandle', version => '' }, { name => 'mod_perl', version => '' } ]; my %missing = (); foreach my $module (@{$modules}) { unless (have_vers($module->{name}, $module->{version})) { $missing{$module->{name}} = $module->{version}; } } system("perl -v"); system("cvs -v")
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-965600/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用perl比較mysql的版本MySql
- 比較 python & perl(轉)Python
- Perl程式與c程式速度的比較(轉)C程式
- 比較四種主要的Linux版本(轉)Linux
- iOS 版本號的比較iOS
- 測試mod_perl模組(轉)
- perl Statistics::Descriptive Perl 的統計模組
- 模組化與微服務比較微服務
- Perl的包和模組
- HTTP協議幾個版本的比較HTTP協議
- 比較 Informix Version 11 的各個版本ORM
- 版本號比較大小問題
- GML、SVG、VML的比較 (轉)SVG
- 流行語言的比較 (轉)
- Hibernate與 MyBatis的比較(轉)MyBatis
- DELPHI的萬用字元比較 (轉)字元
- Nginx通過內建的Perl模組執行Perl程式Nginx
- 如何比較版本號--Python實現Python
- 比較輸入兩個版本號大小
- perl的包(package)和模組(PM)Package
- Perl5的包和模組
- 受限制環境安裝Perl模組方法(轉)
- Perl 模組 Hash::Merge
- Perl模組之Tie::File
- perl cpan 模組安裝
- Python模組學習:filecmp 檔案比較Python
- 關於資料庫物件版本比較的指令碼資料庫物件指令碼
- ASP.NET 與 JAVA 的比較 (轉)ASP.NETJava
- LeetCode-165-比較版本號LeetCode
- php版本比較函式version_compare()PHP函式
- RMAN 相容性矩陣及版本比較矩陣
- (轉)ORACLE 中IN和EXISTS比較Oracle
- 模組化與微服務比較 MircoService VS OSGI微服務
- 【ningoo】編寫Perl模組Go
- 使用CPAN安裝Perl模組
- Python解惑:整數比較 is ==的比較Python
- 字串大小寫轉換和字串的比較字串
- 【轉載】webservice框架xfire和axis的比較Web框架