Perl(Practical Extension and Reporting Language)は高水準の汎用動的プログラミング言語です。1987年にレポート処理の高速化ない簡易化のために汎用のUnixスクリプト言語として開発され、以来何度も変更が加えられてきました。
Perlはシェルスクリプトやsed、そしてC言語などの他のプログラミング言語から機能を借用しています。こんにちでは主に管理、グラフィックスプログラミング、バイオインフォマティクス、ネットワークプログラミング、そしてその他のアプリケーションのために利用されており、インターネットをまとめるダクトテープとも言われます。
タスクを少しでも容易にするためにデザインされたフレームワークやライブラリがたくさんあります。もし次のプロジェクトへのPerlの利用を検討しているのなら、以下のフレームワークはいかがでしょうか。
15.Jifty
JiftyはPerl用のフルスタックウェブアプリケーションです。Jiftyを用いてウェブサイトを構築するためにはアプリケーションを作成する必要があり、アプリケーションごとに別のサーバーを使用することができます。アプリの背後にあるロジックはアクションクラスに要約され、動作を制御するために設定ファイルを用います。フレームワークはテンプレートのレンダリングのため、テンプレートエンジンとしてHTML::Masonを使用します。
14.Gantry
Gantryは成熟したウェブアプリケーションフレームワークで、Perlを実行しているものならどれでも動作します。オブジェクト指向のデザインは、URL ディスパッチへの実用的なモジュラーアプローチを可能にします。迅速な開発、プラグインアーキテクチャー、柔軟なテンプレーティングシステム、ビルトインCRUDオペレーション、ユーザー認証、セッション、フォームの作成とバリデーション、データベース、そしてSQLユーティリティなどのためのスタンドアロンサーバーが特徴です。
13.Embperl
Embperlは小さなサイトを構築するためのフレームワークです。フォームプロセッシング、エスケープ/アンエスケープ、動的テーブル、キャッシング、セッション処理など、ウェブサイトの制作を容易にする多くの機能を提供します。必要に応じてウェブサイトをオブジェクト指向にし、小さな再利用可能なコンポーネントからの構築が可能であり、フレームワークは小さなモジュールの異なるオブジェクトへの分離をサポートします(例えばMVCアプリケーションの制作)。
12.DBUnit
DBUnitはブラックボックステストおよび ホワイトボックステストの両方に対応するデータベースのテストフレームワークです。ブラックボックステストではデータベースが期待値に一致していることを確認できます。このデータベースはテーブル、views、またはストアドファンクション/ストアドプロシージャから取得されます。
他方、ホワイトボックステストは手続き、機能、インデックス、テーブル、カラム、コンストレインとなどのような、存在するデータベーススキーマに焦点を当てます。これらのオブジェクトの特定の性質(デフォルト値、型、例外などのような)をテストすることができます。
11.HTTP::Engine
HTTP::Engineは異なるウェブサーバー環境の入出力の処理を抽象化するマイクロウェブアプリケーションのフレームワークで、mod_perlやCGI、FastCGIなどが含まれます。このコードの大部分はCatalyst::Engineから取られており、オブジェクト (HTTP::Engine::Request)を準備してリクエストハンドラへ渡します。そのあとリクエストハンドラは別のオブジェクト (HTTP::Engine::Response)を返し、サーバーへ伝え返します。
これらのオブジェクトは、processingファイルのアップロード、HTTPクッキーの追跡、ハンドリングのGET、そしてPOSTパラメータなどのような一般的なリクエスト処理タスクのベースに対応しています。
10.Interchange
InterchangeはオープンソースのeコマースWebアプリケーションサーバーおよびプラットフォームで、主にカスタマイズされたeコマースとカタログソリューションの開発に使用されます。マーケティング、オペレーション、ロジスティクス、そしてベンダーマネジメントグループといった他のあらゆるものとうまく動作します。安定した絶え間ないデータ処理と同時に、大きなロードにおいてもよく作動します
9&8.Mason + Poet
MasonはHTMLや他の動的コンテンツを制作するための強力なテンプレーティングシステムで、AmazonやSalon.comを含む何千ものウェブサイトを動かしてきました。Dancerや Catalysのような他のPerlウェブフレームワークのためのテンプレートレイヤーとしても使うことができます。大まかなスタイルはPHPとStoryServerに似ています。
PoetはMason のための対となるフレームワークです。ロギング、キャッシング そしてコンフィグレーションのためにPlackサーバーインテグレーションといくつかのCPAN モジュールを使っています。また、アプリ内のどこからでも共通オブジェクトやユーティリティへアクセスできます。
7.Moose
Mooseはオブジェクトシステムのエクステンションで、オブジェクト指向のPerlを書くという退屈な作業を省いてくれます。Mooseを使うことでやりたいことに集中でき、反対にOOP(オブジェクト指向プログラミング)の手順についてはあまり考えなくても良くなります。メタオブジェクトプロトコル (MOP) のトップに構築され、すべてのMooseを利用したクラスのための完全なイントロスペクションが提供されます。MooseはPerl 5、Smalltalk、BETA、Ocaml、Java、Ruby、Lispなどからいくつかの最適な機能を借りています。
6.Test::More
Test::MoreはPerlのためのベースライン単体テストモジュールです。これは完全なテスティングフレームワークではないものの、Test::Moreを用いて書かれたプログラムで、結果をTAPとして出力します。TPAは人間による解釈、あるいはTAP parser (Test::Harnessなど)を通して実行することが可能です。さらには、出力を保存してあとで再解釈することができます。
5.TAP
TAP (Test Anything Protocol) は単体テストとテストハーネスとの間のコミュニケーションを可能にします。元来 Perlインタプリタの単体テストのために作られており、個々のテストにおいて言語非依存の方法によって結果をテストハーネスへ伝えることができます。
4. CGI::Application
CGI::Application はウェブアプリケーション開発のための軽量で柔軟な MVCフレームワークです。標準インターフェイスであらゆるテンプレートシステムの利用が可能ですが、ページを構築した後に出力が返ってきます。キャッシング、セッション、デバッグ、ロギング、HTMLバリデーションなどのためにプラグインを含むCGI::Applicationのためのプラグイン/アドオンとして動作するよう開発されたCPAN上のモジュールが多数存在します。
3.Mojolicious
MojoliciousはPerl用のリアルタイムウェブアプリケーションフレームワークで、単純なアプリケーションと複雑なアプリケーションの両方のためにデザインされています。RESTfulルート、プラグイン、テスティングフレームワーク、セッション管理、静的ファイルサーバー、署名つきクッキー、そしてPerl-ishテンプレートをサポートしており、CPANから直接インストール可能です。このプレームワークのためのプレビルドパッケージはNetBSD、Microsoft Windows、そしてその他のオペレーティングシステムでも利用することができます。
2.Dancer
Dancerはシンプルで柔軟かつ強力なPerl用ウェブアプリケーションフレームワークで、直感的で表現力豊かなシンタックスを持っています。CPANモジュールへの依存をできる限り少なくしているため、インストールが簡単で、さらにディベロピングやテスティングアプリに使用できるスタンドアローンのディベロップメントサーバー満載です。また、PSGI仕様をサポートしているので、Mongrel 2やPlackを含むコンプライアントPSGIサーバー上で実行することができます。
1.Catalyst
Catalystは最も一般的なPerl MVCフレームワークで、ウェブアプリケーション開発を楽しく迅速で価値あるものにしてくれます。Catalystで構築されたアプリは複雑なオブジェクト階層がなく、堅牢でスケーラブルです。ウェブサービスへインターフェイスを提供してページリクエストを受け取り、リクエストを処理して返すために開発者が書いたコードをディスパッチします。Catalystを利用しているウェブサイトとしてはMagazines.com、Booking.com、bbc.co.ukが一般的です。
このフレームワークは、Perlアプリケーションとライブラリの公式配布チャネルであるCPANを通じて配布されています。
おまけ Task-Kensho
Task-KenshoはEnlightened Perl開発のために推奨されるモジュールのリストで、どれも異なるモジュールリストおよび議論から取られ、いくつかのカテゴリに分類されています。モジュールのグループを個別にインストール可能なタスクに分割してあり、ニーズに従ってそれぞれのタスクを別々にインストールすることができます。