quinta-feira, 17 de setembro de 2015

Listando módulos instalados

Listando módulos em Perl

Este curtíssimo artigo é de utilidade 'pública'! Sim, todo mundo que trabalha ou trabalhou com Perl em algum momento já precisou listar os módulos que estão instalados. Então vai a dica!

Primeiro, instale o módulo Module::Info

$ cpanm Module::Info 

Segundo, baixe o script clicando aqui Basicamente são dois 'loops':

  • O primeiro utiliza o módulo ExtUtils::Installed para listar os módulos 'não-core', embora ele possa trazer os módulos do Core também. A questão é que o módulo Module::CoreList é específico para isso, mas para dizer a verdade eu não sei porque o autor desse script usou os dois módulos. Meu chute é que ExtUtils::Installed possa criar alguma dificuldade para trazer os módulos do Core. Eu realmente não chequei isso, mas whatever! O que importa é o resultado!
  • O segundo loop traz, é claro, somente módulos do core, utilizando Module::CoreList e filtrando pragmas que possam vir a 'sujar' a lista de módulos. Depois utiliza uma instância do módulo Module::Info para extrair mais informações (como a versão do módulo, que está comentada,por exemplo).
O resultado, é claro, é uma lista de módulos.


 URI::Template
 URI::db
 URI::ws
 URL::Encode
 URL::Encode::XS
 UUID::Generator::PurePerl
 UUID::Object
 UUID::Tiny
 Unicode::Collate
 Unicode::Collate::CJK::Big5
 Unicode::Collate::CJK::GB2312
 Unicode::Collate::CJK::JISX0208
 Unicode::Collate::CJK::Korean
 Unicode::Collate::CJK::Pinyin
 Unicode::Collate::CJK::Stroke
 Unicode::Collate::CJK::Zhuyin
 Unicode::Collate::Locale
 Unicode::Normalize
 Unicode::Stringprep
 Unicode::UCD
 User::grent
 User::pwent
 Variable::Magic
 WWW::Correios::PrecoPrazo
 WWW::Curl
 WWW::Curl::UserAgent
 WWW::Facebook::API
 WWW::Mechanize::Cached
 WWW::Mechanize::Cached::GZip
 WWW::Mechanize::Firefox
 WWW::Mechanize::GZip
 WWW::Mechanize::PhantomJS
 WWW::Scripter
 WWW::Scripter::Plugin::JavaScript
 Want
 Web::Util::DBIC::Paging
 WebService::Amazon::Route53
 XML::Simple
 XML::Tiny
 XML::Writer
 XML::XML2JSON
 XML::XPathEngine

Claro que é possível melhorar esse script, adicionando um controle de opções, e aproveitando melhor os filtros dos módulos Module::CoreList e ExtUtils::Installed e Module::Info. Fiquem à vontade para melhorá-lo e publicar. Afinal, estamos falando de opensource por aqui!

That's all, folks!