更新Tweetスクリプト言語のひとつ。Larryの仕事で必要となったawkの機能拡張から生まれた。Spencerの正規表現ライブラリをアレンジし導入した。バイナリデータの処理をサポート。GPLのもとでリリースされるようになった。最初のラクダ本とともにリリースされた。LicenseとGPLのデュアルライセンスになった。リファレンスおよびオブジェクト指向をサポート。JPerlがサポートする最後のバージョン。のちのUnicodeサポートによりJPerlは役目を終えた。Unicodeサポートが試験的に追加された。以後のバージョンはサブバージョン(5.6.0の6)が偶数が安定版、奇数が開発版を意味することになった。EncodeモジュールやPerlIOが追加され、Unicodeサポートが一応の完成を見た。1.0のリリースからちょうど20年目の日にリリースされた。featureプラグマで新機能の使用を制御できるようになった。6.0やIPv6サポートの改善、packageのブロック式記述などが追加された。ハッシュや配列を操作する組み込み関数にそのリファレンスを渡せるようになった。名前の由来Larryは言語の名前を考えるに際し辞書から3,4文字程度の短い単語を探したが、結果的にPearl(真珠)を採用した。同名の言語の存在や「5文字では長すぎる」という理由から、Perlという名前になった(Aの名残は頭字語の組み合わせにみられる)。文字列操作を得意とする言語で、特に言語に組み込まれた強力な正規表現は有名。It./やり方はひとつじゃない)をモットーに、同じ処理でも複数の書き方ができる自由さが特徴である。スクリプト言語としては比較的速い実行速度に加え、コーディングの時間を短くできることを重視している。け、動的配列(可変長配列)、ハッシュ(連想配列)、クロージャーのサポートなどが特徴としてあげられる。その他いくつかの言語の特徴を挙げる。折衷Perlは、Cのようなブロックの見た目や制御文をもち、Lispのように変数に型が無く、$のつく変数や'()'の無い関数(演算子)さらにコメントの書式はシェルスクリプト似で、C++のようにオブジェクトを呼び出せて、sedのごとくパターンマッチが出来、英語のように後置構文がある......。Perlは多くの言語の特徴をアレンジしつつ内包しており、しかも同じ機能を実現する書き方を統一せず複数の書き方を可能にしている。これによりそれぞれのプログラマがそれぞれ慣れた書き方でPerlをかけるようになっている。strict;'プラグマを有効にしない限り、グローバル変数が宣言無しで利用できるが、my(ローカル変数)、local(レクシカル変数)、our(グローバル変数)などの種別をつけて宣言する方が望ましい。変数の前にはその種類に応じて'$'(スカラー変数)、'@'(配列変数)、'%'(ハッシュ変数)のプレフィクス(ファニー文字という)がつき、予約語とバッティングしないようになっている。いくつかの特殊変数があり、それらを通じて環境変数やPerlの機能などを参照、変更できる。リファレンス(参照)Cのポインターに相当する「リファレンス(参照)」という仕組みを備えており、配列などを内容をコピーすることなく参照先だけ渡すことができる。このリファレンスは通常の変数に格納でき、'->'演算子などで「デリファレンス(実体化)」される。無名リファレンスを連鎖することにより複雑なデータ構造を作り上げることができる。パターンマッチ(正規表現)今日多くのプログラミング言語でパターンマッチは使えるが、Perlはその成り立ちからパターンマッチが言語組み込みで、UNIXで標準的なsedなどの書き方に似た特別な構文が用意されている。正規表現の内容は、POSIXの拡張正規表現にPerl独自の拡張(最長/最短マッチの選択、再帰、コメント、複数行記述など)を施したようなもので、非常に強力である。サブルーチン(関数)PerlではC言語の関数にあたるもの('printf()'など)、演算子に当たるもの('+'など)含めて、全て演算子として振る舞うようになっている。printfなどの複数の値を取るものはリスト演算子、popなど単一の値を取るものは単項演算子として振る舞う。複数の値(リスト)を返せる。演算子には'()'がいらない(ただの優先度決定の意味しか持たない)ので、シェルスクリプトのような書き方が可能となる。Package::Name;'のような宣言でパッケージ(名前空間)が宣言できる。Package::Name{...}')ではなく文であり、この文以降のスクリプトファイル内に書かれた内容がその名前空間に属することとなる(5.14でブロックでの宣言も可能となった)。package文が再び出てくれば、それ以降の内容は2番目に出てきたpackageの名前に属することとなる。パッケージ名は'::'で区切られ、階層化することが可能である。package文のない部分のスクリプトは自動的に'main'パッケージの内容であると見なされる。Perlにはmain関数がないが、現在では'main'パッケージに書かれた内容を逐次実行することになっている。オブジェクト指向リファレンスとパッケージの仕組みを組み合わせることによってクラスベースのオブジェクト指向を実現している。出力:awk42オブジェクトは'bless'関数で生成される、パッケージ名とデータを格納するリファレンス(インスタンス変数の働きをする)からなるデータである。メソッドは単なるパッケージ関数で、メソッド呼び出し'->'は左辺のクラス名またはオブジェクトを右辺の関数の第一引数に設定し関数を呼び出す演算子で、コンストラクタはオブジェクトを返す単なるパッケージ関数(名前は任意)である。継承はスーパークラスのパッケージ名を決められた変数へ記録するだけである。この単純な仕組みでできているオブジェクト指向だが、クラスベースのオブジェクト指向として他の言語(C++など)と遜色ない機能を実現している。'private'などアクセスを司る制御がないゆえにアクセス規制は少々面倒である(クロージャなどを使い可能)。Wallが言語学者だったことなどから、Perlは通常のプログラミング言語より自然言語的な振る舞いをするようになっている。コンテクストコンテクスト(文脈)という仕組みにより、同じ変数でも状況により評価された値が変わることがある。関数などの使用により、「単一の値(スカラ)/複数の値(リスト)」、「数値/文字列」を要求される文脈ができ、その状況に応じて適切な値を返す。配列をスカラコンテクスト(スカラを要求する文脈)で評価して、配列の内容ではなく要素数をかえすなどの用途が考えられる。「標準的」な使い方に便利なように、一部の演算子(関数含む)に引数を与えない場合は暗黙の変数をとることになっている。暗黙の変数は$_、@_、%_等の変数で、例えばshiftは@_の内容を操作し、printは$_の内容を表示するような動作をする。ファイル行読み演算子<FILEHANDLE>が読み込んだ行の内容を$_にいれる動作などとも調和し、少ない文字数で処理がかけるようになっている。これは、時にPerlスクリプトの可読性を損ねる一因ともされる。短く自然言語のように略語や短い語によって記述量を減らそうとするむきもある。sayPerlのコーディング複数の書き方ができること、デフォルトで変数に宣言がいらないこと、暗黙の変数などの略記に適した構文などが用意されていることなどから、Perlはコーディングの早さ、簡単さに関してアドバンテージを持つとされる。これにより「ワンライナー」と呼ばれる1行プログラミングの発達やシェルスクリプト的なグルー言語としての地位を手に入れるに至った。制約が緩く、全容を知らずともそこそこのプログラムが書けるので、学習曲線が緩くなる効果もある(その代わり長いが)。その弊害か、「書き捨て」られるコードやスパゲッティプログラムの生まれやすい環境だと言われ、より整理されたとされるPHP、Rubyなどが新規のプログラミング人口にすすめられる要因にもなっている。warnings;'なるプラグマをつけてある程度の制限を課しつつプログラミングを行なうことが近年では推奨されている。UNIXのシステム管理などに利用されていたが、WWWのCGIの仕様が決まった際に存在した文字列処理に長けていて簡単にかける言語という特徴からCGI実装用言語として爆発的普及を見た。普及当初は「初心者向け」の安易な入門などが出回ったせいもあってか、手続き的でスパゲティ風味なコードが量産されていったという。Perl4くらいまでは手続き的なプログラムが普通だった。今ではPHPなど類似の言語も出てきたせいもありそれほどの勢いはないが、いまだ数多くのWebサイトを絶妙なバランスの元、陰で支えているのであろう。基本的に後方互換性は保つ方針で、Perl4のスクリプトであっても僅かな変更で現在最新のPerlで動くという。多くのプラットフォームに移植されているが、一部のプラットフォーム依存のライブラリ(Win32::など)を使わない限り非常に高い互換性を持つようになっている。文字コードPerl4のころまでは、日本語などの文字に対応していなかった。この当時はシフトJISが主流で、電子メールはISO-2022-JPが使われていた。文字をバイト列として処理していたため、C等と同じく日本語文字の処理には不便があった。これを克服するために、jcode.plやJcode.pm、JPerlなどのツールが作られ、文字コードの変換が行なわれていた。文書ファイル(シフトJISやEUC-JP)と電子メール(ISO-2022-JP)の変換処理などで活躍した。Perl5.6から段階的にUTF-8やPerlIOと呼ばれる多バイト文字列処理の仕組みが導入され、現在最新のPerlでは日本語などの多バイト文字を「内部文字列」として統一的に扱うことで、文字を自然に扱うことができる。ライブラリCPANというサイトでPerlのモジュールが数多く公開されていて、再利用という形でオブジェクト指向プログラミングの恩恵を受けることができる。このサイトにはPerlユーザーが登録すれば誰でもモジュールが公開できるようになっている。この非常に多くの有用なモジュールが、古くから続くPerlの資産になっている。Perl6現状最新のPerlのメジャーバージョンは5だが、後継としてPerl6なるものが開発中である。これはPerl4→5のような互換性を保った変革ではなく、Perlの思想だけ残して抜本的に全てを書き換える計画だといい、Perl5との互換性はないとされる。Perlは「実装が仕様」のような状態で長年やってきたが、Perl6は仕様を先に決めそれから実装することが決められている。Perlに限らない汎用な動的型付けインタプリタを目指すParrotという環境がPerl6に関連して開発中である。このように5と6はフルスクラッチレベルで異なるので、Perl5とPerl6は名前が似ている別言語のような扱いとし、両者とも開発が続けられるというような方向性で動いているらしい。ソサイエティー」が商標申請中だった。その部品ところが2009(平成21)年11月2日、株式会社テラ・インターナショナル(代表、北畠徹也)の名義で「Perl」を登録出願された商標が、2010(平成22)年3月1日に登録査定、そして2010(平成22)年4月9日に設定登録された。電子計算機のプログラムの設計・作成又は保守,電子計算機の貸与,電子計算機用プログラムの提供このためコンピューター業界では大問題となり、SlashdotでもPerl、勝手に商標登録される。ストーリーが立てられた。ソサイエティー」である。最終的に、「登録第5314384号商標の商標登録を取り消す。理由として、次のように述べられている。本件に関し、平成23年2月9日付けで、前記4の取消理由を通知し、期間を指定して意見書を提出する機会を与えたが、商標権者からは何らの応答もなかった。本件商標についてした上記の取消理由は妥当であるから、その登録は商標法第4条第1項第15号に違反してされたものといわざるを得ない。したがって、他の理由について判断するまでもなく、本件商標の登録は、同法第43条の3第2項の規定により、取り消すべきものとする。参加の案内ダウンロード↑本の。