HPC:Perl

From HPC wiki
Revision as of 15:45, 13 August 2019 by Obki (talk | contribs) (→‎Running Perl scripts non-interactively)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Perl

Perl version 5.10.1 has been installed across the cluster, along with the popular BioPerl libraries.

User installed Perl Modules from CPAN using CPAN Minus

CPAN Minus is a light-weight replacement for CPAN. In order to install your own Perl modules, you can use the CPAN Minus tool (cpanm) with the --local-lib option:

[asrini@node063 ~]$ cpanm --help
Usage: cpanm [options] Module [...]

Options:
  -v,--verbose              Turns on chatty output
  -q,--quiet                Turns off the most output
  --interactive             Turns on interactive configure (required for Task:: modules)
  -f,--force                force install
  -n,--notest               Do not run unit tests
  --test-only               Run tests only, do not install
  -S,--sudo                 sudo to run install commands
  --installdeps             Only install dependencies
  --showdeps                Only display direct dependencies
  --reinstall               Reinstall the distribution even if you already have the latest version installed
  --mirror                  Specify the base URL for the mirror (e.g. http://cpan.cpantesters.org/)
  --mirror-only             Use the mirror's index file instead of the CPAN Meta DB
  --prompt                  Prompt when configure/build/test fails
  -l,--local-lib            Specify the install base to install modules
  -L,--local-lib-contained  Specify the install base to install all non-core modules
  --auto-cleanup            Number of days that cpanm's work directories expire in. Defaults to 7

Commands:
  --self-upgrade            upgrades itself
  --info                    Displays distribution info on CPAN
  --look                    Opens the distribution with your SHELL
  -V,--version              Displays software version

Examples:

  cpanm Test::More                                          # install Test::More
  cpanm MIYAGAWA/Plack-0.99_05.tar.gz                       # full distribution path
  cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz           # install from URL
  cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz            # install from a local file
  cpanm --interactive Task::Kensho                          # Configure interactively
  cpanm .                                                   # install from local directory
  cpanm --installdeps .                                     # install all the deps for the current directory
  cpanm -L extlib Plack                                     # install Plack and all non-core deps into extlib
  cpanm --mirror http://cpan.cpantesters.org/ DBI           # use the fast-syncing mirror

You can also specify the default options in PERL_CPANM_OPT environment variable in the shell rc:

  export PERL_CPANM_OPT="--prompt --reinstall -l ~/perl --mirror http://cpan.cpantesters.org"

Type `man cpanm` or `perldoc cpanm` for the more detailed explanation of the options.


[asrini@node063 ~]$ cpanm -l perl5 Astro::Time
--> Working on Astro::Time
Fetching http://www.cpan.org/authors/id/C/CP/CPHIL/Astro-0.75.tar.gz ... OK
Configuring Astro-0.75 ... OK
Building and testing Astro-0.75 ... OK
Successfully installed Astro-0.75
1 distribution installed

[asrini@node063 ~]$ tree perl5/
perl5/
├── lib
│   └── perl5
│       ├── Astro
│       │   ├── Coord.pm
│       │   ├── Misc.pm
│       │   └── Time.pm
│       └── x86_64-linux-thread-multi
│           ├── auto
│           │   └── Astro
│           └── perllocal.pod
└── man
    └── man3
        ├── Astro::Coord.3pm
        ├── Astro::Misc.3pm
        └── Astro::Time.3pm

8 directories, 7 files

Installing other perl tools not in CPAN

Refer to the tool's documentation, but usually you supply a PREFIX or INSTALL_BASE to perl Makefile.PL.

Configuring your Perl environment to use local Modules

In order to take advantage of these modules and manpages, you will need define a directory to install them to as well as set a proper value for PERL5LIB.

To define the proper environment variables, you can use the perl5lib environment module:

# add to .bashrc or .tchsrc file
module load perl5lib

Alternatively, you can put the following in your .bashrc file:

 
export PERL5LIB=~/perl5/
export PATH=$PERL5LIB/bin:$PATH
export MANPATH=$PERL5LIB/man:$MANPATH

Running Perl scripts non-interactively

Shown below is a sample Perl script:

$ cat simple.pl
#!/usr/bin/env perl
use warnings;
print "Hello!\n";

The above script can be run on the PMACS HPC cluster:

$ bsub -e simple.e -o simple.o perl simple.pl

Other Pages