Perl - ArchWiki

Jump to content

# Perl

From ArchWiki

Related articles

- List of programming languages
- Perl package guidelines
- Perl Policy
- mod_perl

From Wikipedia:

  Perl is a high-level, general-purpose, interpreted, dynamic programming language.
  Perl borrows features from other programming languages including C, sh, AWK, and sed. It provides text processing facilities without the arbitrary data-length limits of many contemporary Unix command line tools.
  Perl gained widespread popularity in the mid-1990s as a CGI scripting language, in part due to its powerful regular expression and string parsing abilities.

## Installation

Install the perl package.

## Commands

The Perl language interpreter:

    $ perl

Perl bug reporting:

    $ perlbug

Lookup the Perl documentation in POD format:

    $ perldoc

Send the Perl authors and maintainers a thank you message:

    $ perlthanks

## Package management

The Comprehensive Perl Archive Network (CPAN) is a repository of over 250,000 software modules and accompanying documentation written in the Perl programming language by over 12,000 contributors.

CPAN is also the name of a Perl module, `CPAN.pm`, which is used to download and install Perl software from the CPAN archive.

### pacman and AUR

A number of popular CPAN modules are available as packages in the Arch repositories. There are further modules available in the AUR.

### CPAN.pm

The `CPAN.pm` module is included with Perl. It can be used interactively from the shell or in Perl scripts.

#### Configuring cpan

Before first use, the module needs to be configured. This is done interactively from the shell with (some output omitted):

    $ cpan

    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]

Automated configuration will suit most users. Answering yes, the configuration will continue with:

    To install modules, you need to configure a local Perl library directory or
    escalate your privileges. CPAN can help you by bootstrapping the local::lib
    module or by configuring itself to use 'sudo' (if available). You may also
    resolve this problem manually if you need to customize your setup.

    What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
     [local::lib]

If you want `cpan` to install modules in your home directory choose `local::lib`. To install them system-wide choose `sudo`. Choosing `sudo` the configuration ends:

    Autoconfiguration complete.

    commit: wrote '/home/username/.cpan/CPAN/MyConfig.pm'

Choosing the `local::lib` option will result in addition modules being installed.

Choosing not to use automated configuration allows the user to set `cpan` options interactively in the shell. The table below shows some option names with a brief description and default value. More detailed information is displayed for each option during configuration.

Name | Description | Default
--- | --- | ---
cpan_home | CPAN build and cache directory | $HOME/.cpan
keep_source_where | Download target directory | $HOME/.cpan/sources
build_dir | Build process directory | $HOME/.cpan/build
prefs_dir | Customizable modules options directory | $HOME/.cpan/prefs
build_cache | Cache size for build directory | 100MB
cleanup_after_install | Remove build directory after successful install | No
shell | Preferred shell | /bin/bash
halt_on_failure | Halt on failure | No
colorize_output | Turn on colored output | No
histfile | History file location | $HOME/.cpan/histfile
histsize | History file size | 100 lines

The configuration file `$HOME/.cpan/CPAN/MyConfig.pm` can be edited with your text editor of choice.

#### Usage examples

To simply install a modules pass them as parameters to `cpan` (multiple module names are separated by spaces):

    $ cpan Acme::MetaSyntactic

The following examples are all in the `cpan` interactive shell, started with:

    $ cpan

Display information on a module:

    cpan[1]> m Acme::MetaSyntactic

    Reading '/home/username/.cpan/Metadata'
      Database was generated on Fri, 08 Dec 2017 02:17:03 GMT
    Module id = Acme::MetaSyntactic
        CPAN_USERID  BOOK (Philippe Bruhat (BooK) <book@cpan.org>)
        CPAN_VERSION 1.014
        CPAN_FILE    B/BO/BOOK/Acme-MetaSyntactic-1.014.tar.gz
        INST_FILE    (not installed)

View module `README`:

    cpan[2]> readme Acme::MetaSyntactic

    Acme::MetaSyntactic - Themed metasyntactic variables

    DESCRIPTION

    When writing code examples, it's always easy at the beginning:

       my $foo = "bar";
       $foo .= "baz";   # barbaz
    ...

Install a module:

    cpan[3]> install Acme::MetaSyntactic

Re-run cpan configuration:

    cpan[1]> o conf init

## Widget bindings

The following widget toolkit bindings are available:

- gtk2-perl — GTK2 bindings

  https://gtk2-perl.sourceforge.net/ || gtk2-perlAUR

- perl-gtk3 — GTK3 bindings

  https://metacpan.org/release/Gtk3 || perl-gtk3

- Perl/TK — Tk bindings

  https://search.cpan.org/dist/Tk/ || perl-tk

- wxPerl — wxWidgets bindings

  http://www.wxperl.it/ || perl-wxAUR

- Prima — a perl multiplatform graphic toolkit

  https://metacpan.org/release/Prima || perl-primaAUR

To use these with Perl, you may need to install the associated widget kits.

## IDE support

### Development in JetBrains IDE

If you are using a JetBrains IDE, for example IntelliJ Idea, install perl-bundle-camelcadeAUR. Then install Perl plugin. Then go to the Settings > Languages & Frameworks > Perl5. In the Perl 5 Interpreter field select Add System Perl. Now you can make a run/debug configuration for your project and start debugging.

## Tips and tricks

### Perl development environment

perlbrew and plenvAUR automate the installation and management of multiple perl versions under your home directory, allowing you to install modules locally without conflicting with the system perl.

### Improved module management

#### cpanminus

cpanminus extends module management, aims to be zero configuration, and integrates with `local::lib`.

Install the cpanminus package.

See the cpanminus documentation for examples.

#### ucpan

ucpan is an updater for CPAN modules (especially installed in local-lib). To install, run:

    $ cpan App::ucpan

#### Bundle::CPAN

Installing the Bundle::CPAN distribution will add a lot of nice functionality to `CPAN.pm`.

    $ cpan Bundle::CPAN

## See also

### Perl

- The Perl Programming Language (Perl homepage)
- Wikipedia:Perl
- perl(1)
- perldoc(1)

### CPAN

- Comprehensive Perl Archive Network
- wikipedia:CPAN
- CPAN / CPAN Shell / CPANPLUS Quick Reference Guide
- List of recommended Perl modules

### Tutorials

- Perl Tutorials
- Tutorials at perldoc
- cpan configuration
- PerlMonks Tutorials

Category:

- Programming languages

Perl
Add topic