この項目では、Perlとしての最新バージョンであるバージョン5系までのPerlについて説明しています。当初Perl 6として設計が始められたプログラミング言語については「Raku」をご覧ください。
PerlPerlのロゴ
パラダイムマルチパラダイムプログラミング
Perl(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。ウェブ・アプリケーション、システム管理、テキスト処理など、さまざまなプログラムの開発に広く利用されている。
言語処理系としてのperlはフリーソフトウェアである。Artistic LicenseおよびGPLのもとで配布されており、誰でもどちらかのライセンスを選択して利用することができる。UNIX、Windows、macOSやLinuxのようなUNIX互換OSなど多くのプラットフォーム上で動作する。 Perlプログラムには、モジュールによって機能を付加することができる。たとえば、他のプログラムやネットワークとの通信、各種ファイル形式の取り扱い、数学的な計算など、数多くのモジュールが存在する。PerlにはCPANというモジュールを体系的に管理するインターネット上のシステムがある。インターネットに接続していれば、CPANにアクセスして、モジュールをインストールすることが可能である。詳細は「CPAN」を参照 Perlには標準で利用できるモジュールが数多く存在する。一部を以下に挙げる。 Perlの歴史バージョン公開日内容
特徴
強力な文字列処理の仕組みを備えており、正規表現を利用できる。
連想配列(ハッシュ)をサポート。
多次元データ構造が利用可能。
自由度の高い文法。簡潔にプログラムを記述できる。
後方互換性は高い。
数多くのオペレーティングシステムで利用可能である。
インタプリタであり、コードを利用者がコンパイルする仕組みはない。
スクリプト言語の中では高い処理速度を持つ。
Unicode使用を支援する仕組みがある。
モジュールによる拡張が可能であり、有志によって開発された豊富なモジュールを利用できる(CPANを参照)。
オブジェクト指向を支援する仕組みがある。
リファレンスカウント方式によるガーベッジコレクションの仕組みがある。
例外処理を利用できる。
クロージャを利用できる。
リフレクションを利用できる。
Hello world「Hello world」を参照say 'Hello, world!' ;
モジュール
標準モジュール
base
Benchmark
Carp - 呼び出し元の観点で例外を発生
Cwd - カレントディレクトリのパスを取得
Data::Dumper - 変数の内容を出力
Digest::MD5 - MD5値
Digest::SHA - SHA-1/224/256/384/512
Encode - 文字列のエンコード・デコード
Exporter - 関数のエクスポート
File::Basename - ファイルのベース名とディレクトリ名の取得
File::Copy - ファイルの移動とコピー
File::Path - 複数階層のディレクトリの作成と削除
File::Spec - ファイル名に対する移植性のある処理
File::Temp - 一時ファイルの生成
FindBin - スクリプトが存在するディレクトリのパスの取得
Getopt::Long - コマンドライン引数の処理
IO::Socket::INET - ソケット
lib - モジュールの検索パスを追加
List::Util - 配列に対する処理
Net::FTP - FTPクライアント
Scalar::Util - スカラ値のユーティリティ
Storable - データの直列化
Sys::Hostname - ホスト名の取得
Time::Piece - 日付・時刻の扱い
utf8 - utf8プラグマ
代表的なCPANモジュール
テキスト処理
Text::CSV - CSVファイルの解析
Text::Diff - diffコマンド
Template Toolkit - テンプレートシステム
データベース
DBI - 汎用データベースインタフェース
Webアプリケーション
CGI - CGIプログラミング
Plack - PSGIのリファレンス実装
Mojolicious - Webフレームワーク
Catalyst - Webアプリケーションフレームワーク
Webアクセス
LWP::UserAgent - WWWクライアント
データ記述言語の処理
XML::Simple - XMLをPerlのデータ構造に変換
XML::LibXML - XMLのサポート
JSON - JSONのサポート
YAML - YAMLのサポート
歴史
1.01987年12月18日
6台の VAX 機と6台の Sun 機のためのコンフィギュレーション管理制御システムのレポート作成ツールとして誕生した。
2.01988年6月05日
ヘンリー・スペンサー作の美しい正規表現ライブラリを Perl 風にアレンジし、導入した。
3.01989年10月18日
バイナリデータを処理できるようになった。
4.01991年3月21日
O'Reilly&Associates, Inc. より Programming perl が発売されたのに合わせて公開された。
5.01994年10月17日
レキシカル変数 my の導入
リファレンスおよびオブジェクト指向に対応。
useが導入され追加モジュールの取扱いが大幅に強化された。
strictプラグマの導入
5.5.01998年7月22日
正規表現の拡張、B::*モジュールによるフックのサポート、qr// 正規表現演算子の追加がなされた。
BeOS を含む幅広いオペレーティングシステムに移植された。
日本語圏で最も重要なことは、このバージョンが JPerl がサポートする最後のバージョンということである。したがって、日本語情報処理において2022年においてもなお、バージョン 5.005_03 は利用されている。
5.6.02000年5月22日
our文やウィークリファレンス、warningsプラグマの導入など、言語コアが大きく拡張された。
試験的ながら Unicode のサポートを開始した最初のバージョン。
バージョン番号の構造を変更。サブバージョン(5.6.0の6に相当)が偶数のものが安定版、奇数のものが開発版を意味する。
5.8.02002年7月18日
5.8系列の最新版は5.8.9(2008年12月14日)。
汎用文字エンコーディング操作モジュール Encode が標準ライブラリに加えられ、Unicodeおよび Shift_JIS などの様々な文字エンコーディングに正式に対応した。
スレッドやPerlIOレイヤが導入された。
5.10.02007年12月18日
公開日は Perl 1.0 の公開からちょうど20年目にあたる。
静的変数を宣言する state 文や、switch文に相当する given 文、say などの言語拡張が導入された。
新しいキーワードの導入による互換性の問題に対処するため、新しいキーワードの導入を feature プラグマで制御できるようになった。
5.12.02010年4月13日
package のバージョン指定構文や未実装部分を表す...演算子(ヤダヤダ演算子
日付と時刻に関するコアモジュールが2038年問題に対応した。