Perl
[Wikipedia|▼Menu]
5.14.02011年5月14日

Unicode 6.0 にほぼ完全に対応。

IPv6サポートの改善。

push、pop、unshift、shift、each、keys、values などの配列やハッシュを受け取る関数が、リファレンスを受け取ることができるようになった。

package パッケージ名 { ... }構文の追加。

値を破壊せずに戻り値として返す正規表現オプションrが追加。

5.16.02012年5月20日

use バージョン番号文の動作が変更された。以前はスクリプトの実行に必要なPerlのバージョンを示すものだったが、「指定したバージョンよりも新しいバージョンの Perl で新たに実装された機能を無効化する」という動作になった。

__SUB__は現在実行中のサブルーチンに対する参照を返す。

feature プラグマでunicode_evalを有効にすると、文字列に対する eval は常に文字列を Unicode として扱う。またevalbytesを有効にすると、引数をバイト列として評価するevalbytes関数が利用できる。

substr は、左辺値もしくは潜在的に左辺値とみられるコンテキストで2つもしくは3つの引数付きで呼び出された場合、第一引数を変更する特殊な左辺値スカラを返す。

Unicode 6.1 対応も強化された。

デバッガ、CORE名前空間、XSインターフェイスなどでさまざまな機能強化が加わっている。

5.18.02013年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.02014年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.02015年6月1日

ビット単位の演算子が導入された。

ダブルダイアモンド演算子が導入された。

正規表現の\bバウンダリの機能が強化された。

正規表現のキャプチャしない修飾子が追加された。

use re 'strict'がサポートされた。

Unicode 7.0がサポートされた。

POSIX 2008のロケール、通貨がサポートされた。

古いプラットフォーム上のUTF-8判定が改善された。

リファレンスのエイリアスがサポートされた。

引数なしのプロトタイプがサポートされた。

サブルーチンのconstアトリビュートがサポートされた。

filenoにディレクトリハンドルも指定可能になった。

Win32でリスト形式のパイプオープンが可能になった。

リスト代入の繰返し指定が可能になった。

InfとNanの扱いが強化された。

浮動小数点数の扱いが強化された。

InfとNaNの文字列化は致命的エラーになった。

実験的なCバックトレースAPIがサポートされた。

5.24.02016年5月9日

サブルーチンと数値計算が高速化された。

Unicode 8.0 がサポートされた。

実験的な扱いだった前方デリファレンスが本格サポートされた。

5.26.02017年5月30日

Unicode 9.0 がサポートされた。

セキュリティ対策として特殊変数 @INC は、デフォルトではカレントディレクトリ "." を含まなくなった。

実験的な扱いだったレキシカルサブルーチンが本格サポートされた。

インデントされたヒヤドキュメントがサポートされた。

新しい正規表現修飾子 /xx がサポートされた。

正規表現の特殊変数として @{^CAPTURE}、 %{^CAPTURE}、%{^CAPTURE_ALL} が追加された。

OS側で対応していれば、UTF-8 ロケールでデフォルトの照合を使えるようになった。

5.28.02018年6月22日

Unicode 10.0 がサポートされた。

delete 関数がキー/値のハッシュスライスに使えるようになった。

実験的機能として、正規表現アサートの英字名が利用可能になった。

実験的機能として、Unicode 用字の混合が検出できるようになった。

perl -i によるインプレース編集がより安全になった。

state 宣言された配列変数、ハッシュ変数が初期化できるようになった。

OSが扱うiノード番号をフルサイズで扱えるようになった。

sprintf 関数のフォーマットサイズ修飾子 %j は C99以前のコンパイラでも使用できるようになった。

Close-on-exec フラグはアトミックに設定されるようになった。

文字列および数値のビット演算子は実験的ではなくなった。

OSがロケールに対応している場合、スレッド環境でもロケールを自由に使用・変更できるようになった。

特殊変数 ${^SAFE_LOCALES} が追加された。

多数のセキュリティ上の修正が行われた。

5.30.02019年5月22日

Unicode 12.1をサポート。

5.32.02020年6月20日

演算子 isa をサポート。

5.34.02021年5月20日

実験的機能としてuse feature 'try'によるtry/catch構文が追加された。

正規表現の繰り返し構文 qr/{,n}/において下限の省略が可能になった。

これまでは正規表現の中括弧の中にスペースを含むことができなかったが、\x{ FFFC }のようにスペースを含むことが可能になった。

0odddddのような8進数表記が可能になった。

5.36.02022年5月28日

Unicode 14.0 に対応した。

use v5.36 の記述により Perl7 で提案されていた機能の大部分がサポートされた。

コマンドラインフラグ -g が導入された。

正規表現の拡張ブラケット文字クラスは実験的とは見なされなくなった。

正規表現の可変長の後読みは、ほとんど実験的とは見なされなくなった。

浮動小数点例外のシグナル SIGFPE が遅延しなくなった。

ブール値 true/false がサポートされた。

実験的機能として、for ループの1回の処理で複数の値を扱えるようになった。

実験的機能として、組み込み関数が追加された。

実験的機能として、defer ブロックがサポートされた。

実験的機能として、try/catch 構文に finally ブロックが利用できるようになった。

実験的機能として、Unicode による対になるデリミタが多数サポートされた。

サブルーチンシグネチャ付きのサブルーチンの @_ は実験的になった。

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

Movable Type


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:46 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef