この項目では Perlとしての最新バージョンであるバージョン5系までのPerlについて説明しています 当初Perl 6として設計が始められたプログラミング言語については Raku をご覧ください Perl パール とは ラリー ウォールによって開発されたプログラミング言語である 実用性と多様性を重視しており C言語やsed awk シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている ウェブ アプリケーション システム管理 テキスト処理など さまざまなプログラムの開発に広く利用されている PerlPerlのロゴパラダイムマルチパラダイムプログラミング 登場時期1987年 37年前 1987 開発者ラリー ウォール Perl財団 最新リリース5 39 7 2024年1月20日 5か月前 2024 01 20 型付け動的型付け影響を受けた言語C C言語 sed AWK BASIC LISP Unixシェル 影響を与えた言語JavaScript PHP Python Ruby PowerShellプラットフォームLinux macOS Microsoft Windows Solaris AIX HP UX ライセンスArtistic License GPL 1 0かそれ以降 ウェブサイトwww wbr perl wbr orgテンプレートを表示 カテゴリ テンプレート 言語処理系としてのperlはフリーソフトウェアである Artistic LicenseおよびGPLのもとで配布されており 誰でもどちらかのライセンスを選択して利用することができる UNIX Windows macOSやLinuxのようなUNIX互換OSなど多くのプラットフォーム上で動作する 特徴強力な文字列処理の仕組みを備えており 正規表現を利用できる 連想配列 ハッシュ をサポート 多次元データ構造が利用可能 自由度の高い文法 簡潔にプログラムを記述できる 後方互換性は高い 数多くのオペレーティングシステムで利用可能である インタプリタであり コードを利用者がコンパイルする仕組みはない スクリプト言語の中では高い処理速度を持つ Unicode使用を支援する仕組みがある モジュールによる拡張が可能であり 有志によって開発された豊富なモジュールを利用できる CPANを参照 オブジェクト指向を支援する仕組みがある リファレンスカウント方式によるガーベッジコレクションの仕組みがある 例外処理を利用できる クロージャを利用できる リフレクションを利用できる Hello world Hello world を参照 say Hello world モジュールPerlプログラムには モジュールによって機能を付加することができる たとえば 他のプログラムやネットワークとの通信 各種ファイル形式の取り扱い 数学的な計算など 数多くのモジュールが存在する PerlにはCPANというモジュールを体系的に管理するインターネット上のシステムがある インターネットに接続していれば CPANにアクセスして モジュールをインストールすることが可能である 詳細は CPAN を参照 標準モジュール Perlには標準で利用できるモジュールが数多く存在する 一部を以下に挙げる 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のサポート歴史Perlの歴史 バージョン 公開日 内容1 0 1987年12月18日 6台の VAX 機と6台の Sun 機のためのコンフィギュレーション管理制御システムのレポート作成ツールとして誕生した 2 0 1988年6月05日 ヘンリー スペンサー作の美しい正規表現ライブラリを Perl 風にアレンジし 導入した 3 0 1989年10月18日 バイナリデータを処理できるようになった 4 0 1991年3月21日 O Reilly amp Associates Inc より Programming perl が発売されたのに合わせて公開された 5 0 1994年10月17日 レキシカル変数 my の導入 リファレンスおよびオブジェクト指向に対応 useが導入され追加モジュールの取扱いが大幅に強化された strictプラグマの導入5 5 0 1998年7月22日 正規表現の拡張 B モジュールによるフックのサポート qr 正規表現演算子の追加がなされた BeOS を含む幅広いオペレーティングシステムに移植された 日本語圏で最も重要なことは このバージョンが JPerl がサポートする最後のバージョンということである したがって 日本語情報処理において2022年においてもなお バージョン 5 005 03 は利用されている 5 6 0 2000年5月22日 our文やウィークリファレンス warningsプラグマの導入など 言語コアが大きく拡張された 試験的ながら Unicode のサポートを開始した最初のバージョン バージョン番号の構造を変更 サブバージョン 5 6 0の6に相当 が偶数のものが安定版 奇数のものが開発版を意味する 5 8 0 2002年7月18日 5 8系列の最新版は5 8 9 2008年12月14日 汎用文字エンコーディング操作モジュール Encode が標準ライブラリに加えられ Unicode および Shift JIS などの様々な文字エンコーディングに正式に対応した スレッドやPerlIOレイヤが導入された 5 10 0 2007年12月18日 公開日は Perl 1 0 の公開からちょうど20年目にあたる 静的変数を宣言する state 文や switch 文に相当する given 文 say などの言語拡張が導入された 新しいキーワードの導入による互換性の問題に対処するため 新しいキーワードの導入を feature プラグマで制御できるようになった 5 12 0 2010年4月13日 package のバージョン指定構文や未実装部分を表す 演算子 後置の when 修飾子などが導入された 日付と時刻に関するコアモジュールが2038年問題に対応した 5 14 0 2011年5月14日 Unicode 6 0 にほぼ完全に対応 IPv6サポートの改善 push pop unshift shift each keys values などの配列やハッシュを受け取る関数が リファレンスを受け取ることができるようになった package パッケージ名 構文の追加 値を破壊せずに戻り値として返す正規表現オプションrが追加 5 16 0 2012年5月20日 use バージョン番号文の動作が変更された 以前はスクリプトの実行に必要なPerlのバージョンを示すものだったが 指定したバージョンよりも新しいバージョンの Perl で新たに実装された機能を無効化する という動作になった SUB は現在実行中のサブルーチンに対する参照を返す feature プラグマでunicode evalを有効にすると 文字列に対する eval は常に文字列を Unicode として扱う またevalbytesを有効にすると 引数をバイト列として評価するevalbytes関数が利用できる substr は 左辺値もしくは潜在的に左辺値とみられるコンテキストで2つもしくは3つの引数付きで呼び出された場合 第一引数を変更する特殊な左辺値スカラを返す Unicode 6 1 対応も強化された デバッガ CORE名前空間 XSインターフェイスなどでさまざまな機能強化が加わっている 5 18 0 2013年5月18日 実験的機能を利用するための新しい警告カテゴリexperimental feature nameが追加され Perl 5 10 で加わったスマートマッチ演算子 レキシカルな がそのカテゴリに変更された ハッシュの際に使われるシードがランダム化され keys や values each といったハッシュを利用する関数が返すキー 値の並び順が実行毎に異なるようになった Unicode 6 2 への対応 新しいDTraceプローブの追加 実験的機能としてレキシカルサブルーチンの追加などが行われた N 表現の扱いがいくつか変わっているほか 垂直タブがホワイトスペースとして扱われなくなっている点など 文字の扱いについていくつかの変更が加わった encoding CPANPLUS Log Message Log Message Config Log Message Handlers Log Message Item Log Message Simple Object Accessorなどが廃止予定のモジュールとなった 5 20 0 2014年5月27日 実験的機能としてuse feature signature によるサブルーチンシグネチャ use feature postderef によるPostfix Dereferencingと呼ばれる機能が追加された Postfix Dereferencingを利用すると いままで sref のように表記していたものが sref gt のように表記できるようになる 新たなスライス表記として キーと値のペアを戻す hash と array というスライス表記が加わった subキーワードのprototype属性がサポートされ プロトタイプパーシングの一貫性も強化された 64ビットプラットフォーム対応が改善され Perl配列が2 31以上の要素を保持できるようになった 正規表現エンジンは2 31以上の文字列に対応できるようになった Unicode 6 3 に対応した コアモジュールとしてIO Socket IPが追加された rand関数の仕様が変更された 一部のコマンドラインオプションの挙動が変更された 5 22 0 2015年6月1日 ビット単位の演算子が導入された ダブルダイアモンド演算子が導入された 正規表現の bバウンダリの機能が強化された 正規表現のキャプチャしない修飾子が追加された use re strict がサポートされた Unicode 7 0がサポートされた POSIX 2008のロケール 通貨がサポートされた 古いプラットフォーム上のUTF 8判定が改善された リファレンスのエイリアスがサポートされた 引数なしのプロトタイプがサポートされた サブルーチンのconstアトリビュートがサポートされた filenoにディレクトリハンドルも指定可能になった Win32でリスト形式のパイプオープンが可能になった リスト代入の繰返し指定が可能になった InfとNanの扱いが強化された 浮動小数点数の扱いが強化された InfとNaNの文字列化は致命的エラーになった 実験的なCバックトレースAPIがサポートされた 5 24 0 2016年5月9日 サブルーチンと数値計算が高速化された Unicode 8 0 がサポートされた 実験的な扱いだった前方デリファレンスが本格サポートされた 5 26 0 2017年5月30日 Unicode 9 0 がサポートされた セキュリティ対策として特殊変数 INC は デフォルトではカレントディレクトリ を含まなくなった 実験的な扱いだったレキシカルサブルーチンが本格サポートされた インデントされたヒヤドキュメントがサポートされた 新しい正規表現修飾子 xx がサポートされた 正規表現の特殊変数として CAPTURE CAPTURE CAPTURE ALL が追加された OS側で対応していれば UTF 8 ロケールでデフォルトの照合を使えるようになった 5 28 0 2018年6月22日 Unicode 10 0 がサポートされた delete 関数がキー 値のハッシュスライスに使えるようになった 実験的機能として 正規表現アサートの英字名が利用可能になった 実験的機能として Unicode 用字の混合が検出できるようになった perl i によるインプレース編集がより安全になった state 宣言された配列変数 ハッシュ変数が初期化できるようになった OSが扱うiノード番号をフルサイズで扱えるようになった sprintf 関数のフォーマットサイズ修飾子 j は C99以前のコンパイラでも使用できるようになった Close on exec フラグはアトミックに設定されるようになった 文字列および数値のビット演算子は実験的ではなくなった OSがロケールに対応している場合 スレッド環境でもロケールを自由に使用 変更できるようになった 特殊変数 SAFE LOCALES が追加された 多数のセキュリティ上の修正が行われた 5 30 0 2019年5月22日 Unicode 12 1をサポート 5 32 0 2020年6月20日 演算子 isa をサポート 5 34 0 2021年5月20日 実験的機能としてuse feature try によるtry catch構文が追加された 正規表現の繰り返し構文 qr n において下限の省略が可能になった これまでは正規表現の中括弧の中にスペースを含むことができなかったが x FFFC のようにスペースを含むことが可能になった 0o i ddddd i のような8進数表記が可能になった 5 36 0 2022年5月28日 Unicode 14 0 に対応した use v5 36 の記述により Perl7 で提案されていた機能の大部分がサポートされた コマンドラインフラグ g が導入された 正規表現の拡張ブラケット文字クラスは実験的とは見なされなくなった 正規表現の可変長の後読みは ほとんど実験的とは見なされなくなった 浮動小数点例外のシグナル SIGFPE が遅延しなくなった ブール値 true false がサポートされた 実験的機能として for ループの1回の処理で複数の値を扱えるようになった 実験的機能として 組み込み関数が追加された 実験的機能として defer ブロックがサポートされた 実験的機能として try catch 構文に finally ブロックが利用できるようになった 実験的機能として Unicode による対になるデリミタが多数サポートされた サブルーチンシグネチャ付きのサブルーチンの は実験的になった 5 38 0 2023年7月02日 class構文が追加された Unicode 15 0 に対応した 非推奨の警告には特定のサブカテゴリが追加された HOOK APIが導入された PERL RAND SEED シグネチャでのDefined orおよびlogical or代入のデフォルト式がサポートされた INCフックの強化と INCおよびINCDIR deferまたはfinallyブロックからの制御フローがコンパイル時に検出されるようになった パターン内での楽観的な評価 REG INFが65 536から2 147 483 647に引き上げられた 新しいAPI関数optimize optreeおよびfinalize optreeが追加された 一部のgoto文がdeferおよびfinallyブロックで許可されるようになった 新しい正規表現変数 LAST SUCCESSFUL PATTERN が追加された 参加プラットフォームでLocaleカテゴリLC NAMEがサポートされるようになった エピソードラリー ウォールは敬虔なクリスチャンであったため Perlは当初 新約聖書のマタイによる福音書13章46節の 高価な真珠 にちなんで 真珠を意味する pearl と名付けられた ラリーは肯定的な意味を持つ短い名前を選びたいと考えていて 彼によれば3文字および4文字の単語を辞書から探したが良いのが見つからなかったということである また 彼は妻のグロリアにちなんで名前を付けることも考えたが 家族の会話でまぎらわしいために却下となった Perlの正式なリリースの前に ラリーはすでに PEARL という名前のプログラミング言語が存在することに気づき 綴りを変更して Perl とした このようにPerlという名前は何らかの略語ではないが あとからいくつかのバクロニムが考えられている 開発者ラリー自身によると practical extraction and report language 実用的なデータ取得レポート作成言語 という意味を持ち 同時に pathologically eclectic rubbish lister 病的折衷主義のガラクタ出力装置 という少し皮肉な意味も込められている 処理系Perlという名称の記述においては 若干の注意が必要である プログラミング言語としてのPerlを示すときは Perl というように 頭文字を大文字にして固有名詞であることをはっきりさせる この Perl という表記では処理系のことは含まれない Perl 5の現在開発されている唯一の処理系は perl という すべて小文字で記述される名前の処理系である 一般に perlだけがPerlを解釈することができる という表現がなされる PERL のようにすべてを大文字にするのは誤りである このようにPerl 5現在において Perlとは言語の名前であると同時に唯一の処理系の名前でもある この処理系はC言語で書かれている スクリプトは実行前に仮想機械向けにコンパイルされ コンパイルされたバイトコードが実行される ランタイムコンパイル そのため 厳密にはインタプリタとは異なる Pythonのように一旦生成したバイトコードを保存して再利用することは少ないが これは現在のPerlのランタイムコンパイルが高速で バイトコードから実行するメリットがあまりないことが理由の一つである コンパイル済みコードの再利用としてはむしろmod perlのような形式が好まれている PAR Perl Archive Toolkit というPerlスクリプトを実行環境ごとアーカイブし 単一のファイルにまとめるためのツールキットも存在する JARのPerl版と考えてよい 実行可能ファイルを作ることもできるため アプリケーションの配布に適する しかしその場合はPerl実行環境をまるごと含むため ファイルサイズが大きくなる傾向にある Perlの姉妹言語としてRaku 旧 Perl 6 が存在する RakuはParrotというバーチャルマシンの上で動作する 現在 ParrotCodeへのコンパイルを行うRakudo Starという処理系やHaskellで書かれたPugsという処理系などの複数の実装が公開されている なおRakuはPerlと互換性を持たない Perlが利用されているアプリケーションPerlが利用されている代表的なWeb アプリケーションや管理ツール Webアプリケーション Movable Type TWiki Bugzilla cPanelWebサービス DuckDuckGo管理ツール git openssl autoconf automake SpamAssassin VmwareTools MySQL innotop脚注 脚注の使い方 a b Perl 5 39 7 released www nntp perl org 2024年1月20日 閲覧 a b web archive org 2016年3月7日 2022年7月29日 閲覧 プログラミング Perl VOLUME 1 ISBN 4 87311 096 3参考文献ラリー ウォール ジョン オーワント トム クリスチャンセン著 訳 プログラミング Perl VOLUME 1 ISBN 4 87311 096 3 2 ISBN 4 87311 097 1 オライリー ジャパン 2002年関連項目ポータル FLOSS ラリー ウォール Artistic License グルー言語 スクリプト言語 軽量プログラミング言語外部リンクウィキブックスにPerl関連の解説書 教科書があります 公式ウェブサイト Perl programming documentation Perlの公式ドキュメント perldoc jp Perlの公式ドキュメントの日本語訳 CPAN Perlのモジュールの配布を行うサイト Perl com オライリーによるPerlのウェブサイト ActivePerl 社のPerlディストリビューション Win32版はWindows環境で最も利用される Chocolate Perl Perlのディストリビューションのひとつ Strawberry Perl Perlのディストリビューションのひとつ PSGI Plack WSGIのPerlによる実装 Japan Perl Association YAPC Asiaを主催する一般社団法人, ウィキペディア、ウィキ、本、library、論文、読んだ、ダウンロード、自由、無料ダウンロード、mp3、video、mp4、3gp、 jpg、jpeg、gif、png、画像、音楽、歌、映画、本、ゲーム、ゲーム、モバイル、電話、Android、iOS、Apple、携帯電話、Samsung、iPhone、Xiomi、Xiaomi、Redmi、Honor、Oppo、Nokia、Sonya、MI、PC、ウェブ、コンピューター