(Translated by https://www.hiragana.jp/)
Perl - Wikipedia

Perl

プログラミング言語げんごひと

Perl(パール)とは、ラリー・ウォールによって開発かいはつされたプログラミング言語げんごである。実用じつようせい多様たようせい重視じゅうししており、C言語げんごsedawkシェルスクリプトなどのプログラミング言語げんごすぐれた機能きのうれている。ウェブ・アプリケーション、システム管理かんり、テキスト処理しょりなど、さまざまなプログラムの開発かいはつひろ利用りようされている。

Perl
Perl
Perlのロゴ
パラダイム マルチパラダイムプログラミング ウィキデータを編集
登場とうじょう時期じき 1987ねん (37ねんまえ) (1987)
開発かいはつしゃ ラリー・ウォール、Perl財団ざいだん ウィキデータを編集
最新さいしんリリース 5.39.7[1]/ 2024ねん1がつ20日はつか (6かげつまえ) (2024-01-20)[1]
型付かたつ 動的どうてき型付かたつ
影響えいきょうけた言語げんご C++C言語げんごsedAWKBASICLISPUnixシェル ウィキデータを編集
影響えいきょうあたえた言語げんご JavaScriptPHPPythonRubyPowerShell
プラットフォーム LinuxmacOSMicrosoft WindowsSolarisAIXHP-UX ウィキデータを編集
ライセンス Artistic License、GPL 1.0かそれ以降いこう ウィキデータを編集
ウェブサイト www.perl.org
テンプレートを表示ひょうじ

カテゴリ / テンプレート

言語げんご処理しょりけいとしてのperlはフリーソフトウェアである。Artistic LicenseおよびGPLのもとで配布はいふされており、だれでもどちらかのライセンスを選択せんたくして利用りようすることができる。UNIXWindowsmacOSLinuxのようなUNIX互換ごかんOSなどおおくのプラットフォームじょう動作どうさする。

特徴とくちょう

編集へんしゅう
say 'Hello, world!' ;

Perlプログラムには、モジュールによって機能きのう付加ふかすることができる。たとえば、のプログラムやネットワークとの通信つうしん各種かくしゅファイル形式けいしきあつかい、数学すうがくてき計算けいさんなど、すうおおくのモジュールが存在そんざいする。Perlには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モジュール

編集へんしゅう
テキスト処理しょり
データベース
Webアプリケーション
  • CGI - CGIプログラミング
  • Plack - PSGIのリファレンス実装じっそう
  • Mojolicious - Webフレームワーク
  • Catalyst - Webアプリケーションフレームワーク
Webアクセス
データ記述きじゅつ言語げんご処理しょり
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&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サポートの改善かいぜん
  • pushpopunshiftshifteachkeysvalues などの配列はいれつやハッシュを関数かんすうが、リファレンスをることができるようになった。
  • 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 でくわわったスマートマッチ演算えんざん、レキシカルな$_がそのカテゴリに変更へんこうされた。
  • ハッシュのさい使つかわれるシードがランダムされ、keysvalueseach といったハッシュを利用りようする関数かんすうかえすキー/ならじゅん実行じっこうごとことなるようになった。
  • Unicode 6.2 への対応たいおうあたらしいDTraceプローブの追加ついか実験じっけんてき機能きのうとしてレキシカルサブルーチンの追加ついかなどがおこなわれた。\N{...}表現ひょうげんあつかいがいくつかわっているほか、垂直すいちょくタブがホワイトスペースとしてあつかわれなくなっているてんなど、文字もじあつかいについていくつかの変更へんこうくわわった。
  • encodingCPANPLUSLog::MessageLog::Message::ConfigLog::Message::HandlersLog::Message::ItemLog::Message::SimpleObject::Accessorなどが廃止はいし予定よていのモジュールとなった。
5.20.0 2014ねん5がつ27にち
  • 実験じっけんてき機能きのうとしてuse feature 'signature'によるサブルーチンシグネチャ、use feature 'postderef'によるPostfix Dereferencingとばれる機能きのう追加ついかされた。Postfix Dereferencingを利用りようすると、いままで${ $sref } のように表記ひょうきしていたものが$sref->$* のように表記ひょうきできるようになる。
  • あらたなスライス表記ひょうきとして、キーとのペアをもど%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でリスト形式けいしきのパイプオープンが可能かのうになった。
  • リスト代入だいにゅう繰返くりかえ指定してい可能かのうになった。
  • InfNanあつかいが強化きょうかされた。
  • 浮動ふどう小数点しょうすうてんすうあつかいが強化きょうかされた。
  • InfNaN文字もじれつ致命ちめいてきエラーになった。
  • 実験じっけんてきな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 }のようにスペースをふくむことが可能かのうになった。
  • 0odddddのような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」と名付なづけられた[2]。ラリーは肯定こうていてき意味いみみじか名前なまええらびたいとかんがえていて、かれによれば3文字もじおよび4文字もじ単語たんご辞書じしょからさがしたがいのがつからなかったということである。また、かれつまのグロリアにちなんで名前なまえけることもかんがえたが、家族かぞく会話かいわでまぎらわしいために却下きゃっかとなった。

Perlの正式せいしきなリリースのまえに、ラリーはすでに「PEARL」という名前なまえのプログラミング言語げんご存在そんざいすることにづき、つづりを変更へんこうして「Perl」とした[2]。このようにPerlという名前なまえなんらかの略語りゃくごではないが、あとからいくつかのバクロニムかんがえられている。開発かいはつしゃラリー自身じしんによると、「practical extraction and report language」(実用じつようてきなデータ取得しゅとくレポート作成さくせい言語げんご)という意味いみち、同時どうじに 「pathologically eclectic rubbish lister」(病的びょうてき折衷せっちゅう主義しゅぎのガラクタ出力しゅつりょく装置そうち[3]というすこ皮肉ひにく意味いみめられている。

処理しょりけい

編集へんしゅう

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アプリケーション

編集へんしゅう

管理かんりツール

編集へんしゅう

脚注きゃくちゅう

編集へんしゅう
  1. ^ a b Perl 5.39.7 released”. www.nntp.perl.org. 2024ねん1がつ20日はつか閲覧えつらん
  2. ^ a b Scripting on the Lido Deck | WIRED”. web.archive.org (2016ねん3がつ7にち). 2022ねん7がつ29にち閲覧えつらん
  3. ^ プログラミング Perl VOLUME 1 ISBN 4-87311-096-3

参考さんこう文献ぶんけん

編集へんしゅう

関連かんれん項目こうもく

編集へんしゅう

外部がいぶリンク

編集へんしゅう