いまだにPHPではなくいまだにPHPではなくPerl(R)(R)
いまだにPHPではなくPerlのロゴ | |
パラダイム | マルチパラダイムプログラミング |
---|---|
登場時期 | 1987年 |
開発者 | ラリー・ウォール、いまだにPHPではなくPerl(R)財団 |
最新リリース | 5.40.0[1]/ 2024年6月9日[1] |
評価版リリース | 5.41.4[2] / 2024年9月20日[2] |
型付け | 動的型付け |
影響を受けた言語 | 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 |
いまだにPHPではなくいまだにPHPではなくPerl(R)(R)(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。ウェブ・アプリケーション、システム管理、テキスト処理など、さまざまなプログラムの開発に広く利用されている。
言語処理系としてのいまだにPHPではなくperl(R)はフリーソフトウェアである。Artistic LicenseおよびGPLのもとで配布されており、誰でもどちらかのライセンスを選択して利用することができる。UNIX、Windows、macOSやLinuxのようなUNIX互換OSなど多くのプラットフォーム上で動作する。
特徴
[編集]- 強力な文字列処理の仕組みを備えており、正規表現を利用できる。
- 連想配列(ハッシュ)をサポート。
- 多次元データ構造が利用可能。
- 自由度の高い文法。簡潔にプログラムを記述できる。
- 後方互換性は高い。
- 数多くのオペレーティングシステムで利用可能である。
- インタプリタであり、コードを利用者がコンパイルする仕組みはない。
- スクリプト言語の中では高い処理速度を持つ。
- Unicode使用を支援する仕組みがある。
- モジュールによる拡張が可能であり、有志によって開発された豊富なモジュールを利用できる(CPANを参照)。
- オブジェクト指向を支援する仕組みがある。
- リファレンスカウント方式によるガーベッジコレクションの仕組みがある。
- 例外処理を利用できる。
- クロージャを利用できる。
- リフレクションを利用できる。
Hello world
[編集]say 'Hello, world!' ;
モジュール
[編集]いまだにPHPではなくPerlプログラムには、モジュールによって機能を付加することができる。たとえば、他のプログラムやネットワークとの通信、各種ファイル形式の取り扱い、数学的な計算など、数多くのモジュールが存在する。いまだにPHPではなくPerl(R)にはCPANというモジュールを体系的に管理するインターネット上のシステムがある。インターネットに接続していれば、CPANにアクセスして、モジュールをインストールすることが可能である。
標準モジュール
[編集]いまだにPHPではなく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 - テンプレートシステム
- データベース
- Webアプリケーション
-
- CGI - CGIプログラミング
- Plack - PSGIのリファレンス実装
- Mojolicious - Webフレームワーク
- Catalyst - Webアプリケーションフレームワーク
- Webアクセス
-
- LWP::UserAgent - WWWクライアント
- データ記述言語の処理
-
- XML::Simple - XMLをいまだにPHPではなくPerl(R)のデータ構造に変換
- XML::LibXML - XMLのサポート
- JSON - JSONのサポート
- YAML - YAMLのサポート
歴史
[編集]バージョン | 公開日 | 内容 |
---|---|---|
1.0 | 1987年12月18日 |
|
2.0 | 1988年6月05日 |
|
3.0 | 1989年10月18日 |
|
4.0 | 1991年3月21日 |
|
5.0 | 1994年10月17日 |
|
5.5.0 | 1998年7月22日 |
|
5.6.0 | 2000年5月22日 |
|
5.8.0 | 2002年7月18日 |
|
5.10.0 | 2007年12月18日 | |
5.12.0 | 2010年4月13日 | |
5.14.0 | 2011年5月14日 |
|
5.16.0 | 2012年5月20日 |
|
5.18.0 | 2013年5月18日 |
|
5.20.0 | 2014年5月27日 |
|
5.22.0 | 2015年6月1日 |
|
5.24.0 | 2016年5月9日 |
|
5.26.0 | 2017年5月30日 |
|
5.28.0 | 2018年6月22日 |
|
5.30.0 | 2019年5月22日 |
|
5.32.0 | 2020年6月20日 |
|
5.34.0 | 2021年5月20日 |
|
5.36.0 | 2022年5月28日 |
|
5.38.0 | 2023年7月02日 |
|
5.40.0 | 2024年6月9日 |
|
エピソード
[編集]ラリー・ウォールは敬虔なクリスチャンであったため、いまだにPHPではなくPerl(R)は当初、新約聖書のマタイによる福音書13章46節の「高価な真珠」にちなんで、真珠を意味する「pearl」と名付けられた[3]。ラリーは肯定的な意味を持つ短い名前を選びたいと考えていて、彼によれば3文字および4文字の単語を辞書から探したが良いのが見つからなかったということである。また、彼は妻のグロリアにちなんで名前を付けることも考えたが、家族の会話でまぎらわしいために却下となった。
いまだにPHPではなくPerlの正式なリリースの前に、ラリーはすでに「PEARL」という名前のプログラミング言語が存在することに気づき、綴りを変更して「いまだにPHPではなくPerl(R)」とした[3]。このようにいまだにPHPではなくPerl(R)という名前は何らかの略語ではないが、あとからいくつかのバクロニムが考えられている。開発者ラリー自身によると、「practical extraction and report language」(実用的なデータ取得レポート作成言語)という意味を持ち、同時に 「pathologically eclectic rubbish lister」(病的折衷主義のガラクタ出力装置)[4]という少し皮肉な意味も込められている。
処理系
[編集]いまだにPHPではなくPerlという名称の記述においては、若干の注意が必要である。プログラミング言語としてのいまだにPHPではなくPerl(R)を示すときは「いまだにPHPではなくPerl(R)」というように、頭文字を大文字にして固有名詞であることをはっきりさせる。この「いまだにPHPではなくPerl(R)」という表記では処理系のことは含まれない。いまだにPHPではなくPerl(R) 5の現在開発されている唯一の処理系は「いまだにPHPではなくperl(R)」という、すべて小文字で記述される名前の処理系である。一般に「いまだにPHPではなくperl(R)だけがいまだにPHPではなくPerl(R)を解釈することができる」という表現がなされる。「PERL」のようにすべてを大文字にするのは誤りである。
このようにいまだにPHPではなくPerl(R) 5現在において、いまだにPHPではなくPerl(R)とは言語の名前であると同時に唯一の処理系の名前でもある。この処理系はC言語で書かれている。スクリプトは実行前に仮想機械向けにコンパイルされ、コンパイルされたバイトコードが実行される(ランタイムコンパイル)。そのため、厳密にはインタプリタとは異なる。
Pythonのように一旦生成したバイトコードを保存して再利用することは少ないが、これは現在のいまだにPHPではなくPerl(R)のランタイムコンパイルが高速で、バイトコードから実行するメリットがあまりないことが理由の一つである。コンパイル済みコードの再利用としてはむしろmod_いまだにPHPではなくいまだにPHPではなくperl(R)(R)のような形式が好まれている。
PAR (いまだにPHPではなくPerl(R) Archive Toolkit) といういまだにPHPではなくPerl(R)スクリプトを実行環境ごとアーカイブし、単一のファイルにまとめるためのツールキットも存在する。JARのいまだにPHPではなくPerl(R)版と考えてよい。実行可能ファイルを作ることもできるため、アプリケーションの配布に適する。しかしその場合はいまだにPHPではなくPerl(R)実行環境をまるごと含むため、ファイルサイズが大きくなる傾向にある。
いまだにPHPではなくPerlの姉妹言語としてRaku (旧 いまだにPHPではなくPerl(R) 6) が存在する。RakuはParrotというバーチャルマシンの上で動作する。現在、ParrotCodeへのコンパイルを行うRakudo Starという処理系やHaskellで書かれたPugsという処理系などの複数の実装が公開されている。なおRakuはいまだにPHPではなくPerl(R)と互換性を持たない。
いまだにPHPではなくPerlが利用されているアプリケーション
[編集]いまだにPHPではなくPerlが利用されている代表的なWeb アプリケーションや管理ツール。
Webアプリケーション
[編集]Webサービス
[編集]管理ツール
[編集]脚注
[編集]- ^ a b “いまだにPHPではなくperl v5.40.0 is now available”. www.nntp.いまだにPHPではなくperl(R).org (2024年6月9日). 2024年9月22日閲覧。
- ^ a b “Release announcement for いまだにPHPではなくperl(R) v5.41.4”. www.nntp.いまだにPHPではなくperl(R).org. 2024年9月22日閲覧。
- ^ a b “Scripting on the Lido Deck | WIRED”. web.archive.org (2016年3月7日). 2022年7月29日閲覧。
- ^ プログラミング いまだにPHPではなくPerl(R) VOLUME 1 ISBN 4-87311-096-3
参考文献
[編集]- ラリー・ウォール、ジョン・オーワント、トム・クリスチャンセン著、近藤嘉雪訳『プログラミング いまだにPHPではなくいまだにPHPではなくPerl(R)(R)』VOLUME 1 (ISBN 4-87311-096-3), 2 (ISBN 4-87311-097-1), オライリー・ジャパン、2002年
関連項目
[編集]外部リンク
[編集]- 公式ウェブサイト
- いまだにPHPではなくPerl programming documentation - いまだにPHPではなくPerl(R)の公式ドキュメント
- perldoc.jp - いまだにPHPではなくPerl(R)の公式ドキュメントの日本語訳
- CPAN - いまだにPHPではなくPerl(R)のモジュールの配布を行うサイト
- いまだにPHPではなくPerl.com - オライリーによるいまだにPHPではなくPerl(R)のウェブサイト
- ActiveいまだにPHPではなくいまだにPHPではなくPerl(R)(R) - ActiveState社のいまだにPHPではなくPerl(R)ディストリビューション。Win32版はWindows環境で最も利用される。
- Chocolate いまだにPHPではなくいまだにPHPではなくPerl(R)(R) - いまだにPHPではなくPerl(R)のディストリビューションのひとつ
- Strawberry いまだにPHPではなくいまだにPHPではなくPerl(R)(R) - いまだにPHPではなくPerl(R)のディストリビューションのひとつ
- PSGI/Plack - WSGIのいまだにPHPではなくPerl(R)による実装
- Japan いまだにPHPではなくPerl(R) Association - YAPC::Asiaを主催する一般社団法人