概要
ラリー・ウォール(Larry Wall)により作成されたスクリプト言語、及びその処理系(こちらはPerlと今後書く)。
元々は真珠の英語表記pearlであったが、別の言語と名前がかぶっていることに気がついたため今の名前となっている。
正規表現を利用した文字列処理に優れており、簡単なコマンドライン制御ツール、テキスト処理、CGIプログラムにしばしば用いられている。
Perl
フリーソフトウェアで、アーティスティックライセンス/GPLにより配布されている。
いいところ
- 様々な記述方式があるため、慣れると快適に記述することができる
- CPANが利用できるのであれば他の人が作ったモジュールを再利用できる
- オブジェクト指向を柔軟に表現することができる
- 文字列に対する演算能力が高い
むつかしいところ
- CGIスクリプトを記述する際、shebangがWindows系OSとそれ以外とで異なるためソースコードをそのまま流用できない
- 定義済み変数が多すぎて、理解するまで他の人のソースコードが読めない
- 文字列演算処理の指定が細かいため、慣れるまでソースコードが読めない
- 略記法がしばしば使われるため、その存在を知らないとソースコードが読めない
- 詳細な動作原理を理解しないとCPANのソースコードが読めない
- Windows上でCPANの資産を利用できないケースがある
- OSに対して十分な権限がないとCPANを利用する手順が難しくなる
- モジュールのバージョンは頻繁に上がるため、(企業での利用に特に多い)バージョン指定を厳密に行う条件においての管理・運用が非常に手間である
- CPANのなにかのモジュールが利用不可となると、少しでもそのモジュールに依存している他のモジュールも連鎖的に利用不可となる
- perlbrewなどを利用してPerlの環境を整えておかないと、システムで利用されるPerlの処理に影響を与えたり、システム側でPerlの更新があったときに予期せぬ影響を受けたりする。
- my, local, ourとある変数スコープが理解しづらい
- JavaやC++, C#と比べると、言語設計によってオブジェクト指向をサポートしているわけではないので、既存のオブジェクト指向言語に比べて動作の理解が難しい
- リファレンスと、それを用いたスカラ、配列、ハッシュの理解が難しい
- 文字列の取り扱いに対してutf8フラグやエンコーディングをしっかり意識していないと容易に文字化けしたりプログラムが動作しなかったりする
- (日本語による)webによる独学の手段を見つけるまでが難しい(大体の場合、PerlはCGIとしてのPerlとして紹介され、その導入のためにwebサーバとPerlの動作環境をWindowsに入れ、設定を行うまでが非常に煩雑である)
CGI経由でのPerl
CGI経由で用いる場合はFastCGIやmod_perl(Apache)などを使用すると、プログラムがメモリにキャッシュされ、高速に処理出来るが、内容がキャッシュされることを前提に記述されたコードでないと正しく実行出来ないため、高速化を行うためにはそれを意識したプログラムの作りとしなければならない。
PSGI
webアプリケーションのためのPerl利用方法として、昔からの方法であった標準入力(+環境変数)標準出力とのやりとりではなく、Perlでの処理を前提とし、Perlのやりかたで入出力手段(インターフェイス)を定義したのがPSGI(Perl Web Server Gateway Interface Specification)である。これにより、PSGIのやりかたで記述されたPerlのwebアプリケーションはPSGIを提供するどのサーバーでも実行可能となる。
PSGIが提案される以前にも、Perlでwebアプリケーションを実装するための様々なやり方が存在したが、それは特定のフレームワーク・ミドルウェア・webサーバに依存する(つまり移植性に乏しい)ものであった。
CPAN
PerlはCPANというパッケージ管理システムを用いることによって機能を付加できる
同様の物に、RubyではRubyGems、Pythonではeasy_install、PHPではPEARがある。
Hello, world
(Command Line)
>perl -e "print 'Hello, world'"
(Console Program, Linux)
#!/usr/bin/perl
binmode STDOUT, ":utf8";
use utf8;
use strict;
use Perl6::Say;
say "Hello, world!";
(CGI,Linux)
#!/usr/bin/perl
binmode STDOUT, ":utf8";
use utf8;
use strict;
print "Content-type: text/html charset=utf8\n\n";
print "<html><head></head><body><p>Hello, world!</p></body></html>";
関連動画
関連商品
関連コミュニティ
関連項目
外部リンク
http://dic.nicomoba.jp/k/a/perl


ページ番号: 694842
リビジョン番号: 1335685
読み:パール
初版作成日: 08/11/07 19:01 ◆ 最終更新日: 11/10/30 08:34
編集内容についての説明/コメント: 追記
記事編集 / 編集履歴を閲覧 / Twitterで紹介






JASRAC許諾番号: 9011622001Y31015
ヘッダー:固定
ヘッダー:追従