Perl

提供: ArchWiki
2019年11月21日 (木) 18:49時点におけるKusakata.bot2 (トーク | 投稿記録)による版 (Pkg/AUR テンプレートの更新)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

Wikipedia より:

Perl は高水準・汎用・インタプリタ・動的プログラミング言語である。Perl には Perl 5 と Perl 6 が存在する。
Perl 言語は C 言語、シェルスクリプト (sh)、AWK、sed など他のプログラミング言語の優れた機能を取り入れている。強力なテキスト処理機能を備えており、同様の機能を持った Unix コマンドラインツールに存在するデータ長の制限がなく、簡単にテキストファイルを操作することができる。Perl 5 は1990年代後期には CGI スクリプト言語として広く人気を得た。人気となった理由として卓越した正規表現や文字列解析機能が挙げられる。

インストール

Perl 5

Perl 5 の perl パッケージは base グループとして Arch Linux ではデフォルトでインストールされます。

Perl 6

Perl 6 コンパイラが含まれている rakudoAUR は MoarVM と JVM をターゲットとします。依存パッケージとして AUR の moarvmAUR パッケージがインストールされます。

コマンド

Perl 5

Perl 言語のインタプリタ:

$ perl

Perl のバグを報告:

$ perlbug

POD 形式の Perl ドキュメントを閲覧:

$ perldoc

Perl の開発者やメンテナに感謝のメッセージを送る:

$ perlthanks

Perl 6

Rakudo Perl 6 コンパイラ:

$ perl6

Perl 5 のサンプル

$ perl hello-world.pl で実行する古典的な "Hello, World!" プログラム:

hello-world.pl
use strict;
use warnings;

print "Hello, World!\n";

実行可能属性を付与することで $ ./hello-you で実行できるプログラム:

hello-you
#!/usr/bin/perl

use strict;
use warnings;

print "Please enter your name: ";
my $name = <STDIN>;
chomp ($name);
print "Hello $name. Glad to meet you.\n";

フィボナッチ数列を出力するワンライナー:

$ perl -le'$==1,(1x$_)=~/(^)(1|11\1)*(?{$=++})^/,print$=for 0..10'

パッケージ管理

Comprehensive Perl Archive Network (CPAN) は Perl 言語で書かれた250000以上のソフトウェアモジュールとドキュメントが収録されているリポジトリです。12000人以上の Perl プログラマが貢献しています。

CPAN は Perl モジュールの CPAN.pm の名前でもあり、モジュールを使用して CPAN アーカイブから Perl ソフトウェアをダウンロード・インストールできます。

pacman と AUR

人気の CPAN モジュールの一部は Arch リポジトリに パッケージ として登録されています。AUR にはさらに多くのモジュールが存在します。

CPAN.pm

CPAN.pm モジュールは Perl に付属しています。シェルからインタラクティブに使用したり Perl スクリプトから利用できます。

cpan の設定

使用する前に、モジュールの設定が必要です。以下のようにシェルからインタラクティブに設定できます (一部出力を省略):

$ 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] 

大抵の場合は自動設定で問題ありません。yes と答えると、以下のように設定が続きます:

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] 

cpan でモジュールをホームディレクトリにインストールしたい場合は local::lib を選択してください。全ユーザー共通でインストールしたい場合は sudo を選択してください。sudo を選択すると以下のように設定が終了します:

Autoconfiguration complete.

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

local::lib オプションを選択すると追加でモジュールがインストールされます。

自動設定を使用しないときはシェルから cpan のオプションをインタラクティブに設定できます。以下の表は一部のオプションの名前と説明、デフォルト値を示しています。設定時に各オプションの詳しい説明が表示されます。

名前 説明 デフォルト
cpan_home CPAN のビルド・キャッシュディレクトリ $HOME/.cpan
keep_source_where ダウンロード先ディレクトリ $HOME/.cpan/sources
build_dir ビルドプロセスディレクトリ $HOME/.cpan/build
prefs_dir モジュールオプションディレクトリ $HOME/.cpan/prefs
build_cache ビルドディレクトリのキャッシュ容量 100MB
cleanup_after_install インストール後にビルドディレクトリを削除 No
shell 使用するシェル /bin/bash
halt_on_failure 失敗時に停止 No
colorize_output カラー出力のオンオフ No
histfile 履歴ファイルの保存場所 $HOME/.cpan/histfile
histsize 履歴ファイルのサイズ 100 lines

テキストエディタを使って設定ファイル $HOME/.cpan/CPAN/MyConfig.pm を編集することもできます。

使用例

モジュールをインストールするには cpan にパラメータとしてモジュール名を指定してください (スペースで区切って複数のモジュール名を指定できます):

$ cpan Acme::MetaSyntactic 

cpan のインタラクティブシェルを起動するには:

$ cpan

モジュールの情報を表示:

cpan[1]> m Acme::MetaSyntactic

Reading '/home/toxygeneb/.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)

モジュールの 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
...

モジュールをインストール:

cpan[3]> install Acme::MetaSyntactic

ウィジェットバインディング

以下のウィジェットツールキットのバインディングが存在します:

  • gtk2-perl — GTK2 バインディング
http://gtk2-perl.sourceforge.net/ || gtk2-perl
  • Perl/TK — Tk バインディング
http://search.cpan.org/dist/Tk/ || perl-tk
  • perlqtQt バインディング
https://github.com/KDE/perlqt ||
  • wxPerl — wxWidgets バインディング
http://www.wxperl.it/ || perl-wxAUR

Perl で使用するには、ウィジェットキットをインストールする必要があります。

ヒントとテクニック

高度なモジュール管理

cpanminus

cpanminus はモジュール管理を拡張します。設定不要で local::db と統合されています。インストールするには:

$ cpan App::cpanminus

cpanminus ドキュメント にサンプルが載っています。

Bundle::CPAN

Bundle::CPAN ディストリビューションをインストールすることで CPAN.pm に機能が多数追加されます:

$ cpan Bundle::CPAN

cpan 設定の再実行

$ cpan
cpan[1]> o conf init

参照

Perl 5

Perl 6

CPAN

チュートリアル

その他