# Perl (Homebrew) On peut installer une version plus récente de Perl avec **Homebrew**: ```bash $ brew install perl ``` ```bash $ brew info perl zsh: correct 'perl' to 'perl5' [nyae]? n perl: stable 5.30.0 (bottled), HEAD Highly capable, feature-rich programming language https://www.perl.org/ /usr/local/Cellar/perl/5.30.0 (2,440 files, 61.8MB) * Poured from bottle on 2019-08-04 at 13:32:46 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/perl.rb ==> Options --HEAD Install HEAD version ==> Caveats By default non-brewed cpan modules are installed to the Cellar. If you wish for your modules to persist across updates we recommend using `local::lib`. You can set that up like this: PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"' >> ~/.zshrc ``` ```bash $ which perl /usr/local/bin/perl $ perl -v This is perl 5, version 30, subversion 0 (v5.30.0) built for darwin-thread-multi-2level Copyright 1987-2019, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. ``` #### cpan: **cpan** gère les modules Perl. ```bash $ cpan Loading internal logger. Log::Log4perl recommended for better logging CPAN.pm requires configuration, but most of it can be done automatically. If you answer 'no' below, you will enter an interactive dialog for each configuration option instead. Would you like to configure as much as possible automatically? [yes] yes Autoconfiguration complete. commit: wrote '/Users/bruno/.cpan/CPAN/MyConfig.pm' You can re-run configuration any time with 'o conf init' in the CPAN shell Terminal does not support AddHistory. To fix enter> install Term::ReadLine::Perl cpan shell -- CPAN exploration and modules installation (v2.22) Enter 'h' for help. ``` Sans argument, la commande **cpan** ouvre un shell: ```bash $ cpan Loading internal logger. Log::Log4perl recommended for better logging cpan shell -- CPAN exploration and modules installation (v2.27) Enter 'h' for help. cpan[1]> h ``` ```bash cpan[1]> h Display Information (ver 2.27) command argument description a,b,d,m WORD or /REGEXP/ about authors, bundles, distributions, modules i WORD or /REGEXP/ about any of the above ls AUTHOR or GLOB about files in the author's directory (with WORD being a module, bundle or author name or a distribution name of the form AUTHOR/DISTRIBUTION) Download, Test, Make, Install... get download clean make clean make make (implies get) look open subshell in dist directory test make test (implies make) readme display these README files install make install (implies test) perldoc display POD documentation Upgrade installed modules r WORDs or /REGEXP/ or NONE report updates for some/matching/all upgrade WORDs or /REGEXP/ or NONE upgrade some/matching/all modules Pragmas force CMD try hard to do command fforce CMD try harder notest CMD skip testing Other h,? display this menu ! perl-code eval a perl command o conf [opt] set and query options q quit the cpan shell reload cpan load CPAN.pm again reload index load newer indices autobundle Snapshot recent latest CPAN uploads ``` La commande **cpan** peut aussi s'utiliser avec arguments: Avec Perl installé via homebrew, les modules sont installés dans Cellar (`Installing /usr/local/Cellar/perl/5.30.0/lib/perl5/site_perl/5.30.0/CPAN/DistnameInfo.pm`). Ils sont donc perdu à chaque mise-à-jour de Perl. Il est donc conseillé d'utiliser `local::lib` ```bash PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"' >> ~/.zshrc # les dossiers suivants sont crées: # $HOME/perl5/bin/ # $HOME/perl5/lib/ # # à côté de $HOME/perl5/perlbrew/ ``` Les modules sont alors installés ici `Installing /Users/bruno/perl5/lib/perl5/Log/Log4perl.pm` ##### Info sur un module: `cpan -D ` ```bash $ cpan -D CPAN::DistnameInfo Reading '/Users/bruno/.cpan/Metadata' Database was generated on Tue, 17 Dec 2019 07:29:02 GMT CPAN::DistnameInfo ------------------------------------------------------------------------- CPAN: Module::CoreList loaded ok (v5.20190522) (no description) G/GB/GBARR/CPAN-DistnameInfo-0.12.tar.gz /usr/local/Cellar/perl/5.30.0/lib/perl5/site_perl/5.30.0/CPAN/DistnameInfo.pm Installed: 0.12 CPAN: 0.12 up to date Graham Barr (GBARR) gbarr@pobox.com ``` ##### Liste des modules installés: `cpan -l` ```bash $ cpan -l Spiffy 0.46 YAML 1.29 CPAN::DistnameInfo 0.12 App::pmuninstall 0.30 Test::YAML 1.07 ``` ##### Désintaller un module: Il n'y a pas de commande prévue pour ça. On peut installer [pmuninstall](https://github.com/xaicron/pm-uninstall). ```bash $ cpan -i App::pmuninstall ``` Puis pour désinstaller: ```bash $ pm-uninstall -v App::cpnaminus ``` ##### Modules mis-à-jour: On peut installer [cpanoutdated](https://github.com/tokuhirom/cpan-outdated) ```bash $ cpan -i App::cpanoutdated ``` et voir les modules 'outdated' ```bash $ cpan-outdated -p Compress::Raw::Bzip2 Compress::Raw::Zlib Compress::Zlib DB_File $ cpan-outdated P/PM/PMQS/Compress-Raw-Bzip2-2.093.tar.gz P/PM/PMQS/Compress-Raw-Zlib-2.093.tar.gz P/PM/PMQS/IO-Compress-2.093.tar.gz P/PM/PMQS/DB_File-1.852.tar.gz ``` Il est recommandé d'installer les modules suivants: - Term::ReadLine::Perl (réclamé par le shell cpan) - CPAN::DistnameInfo (réclamé par l'installeur de module) - Log::Log4perl ###