PL/Perl を使うと、あたかも Postgres に組み込まれているかの ように Perl プログラミング言語を使った SQL 問い合わせ関数の作成 を行うことができます。
PL/Perl インタプリタは、完全な Perl インタプリタです。 しかしながら、システムのセキュリティレベルを確保するために、 使用できないようにしている機能もあります。 一般に、これらの制限されている操作は環境と互いに影響し合って います。例としては、ファイルハンドルの操作、 require、(外部モジュール用の) use などがあります。 このセキュリティが絶対ではないことは知っておくべきでしょう。 実際に、いくつかの DoS攻撃 (サービス停止攻撃: Denial-of-Service) - メモリ浪費とエンドレスループの 2 つの例 - は現状でも可能です。
PostgresのソースからPL/Perlをインストールする場合は、 configureスクリプトに--with-perlオプション を付けなければなりません。 PL/Perlでは、Perlのlibperlライブ ラリが共用オブジェクトとしてビルドされている必要があります。 現時点では、OSに予め備わっているPerlパッケージのほとんどは、このようになっ ていません。 そこで、次のようなメッセージがビルドするときに表示されることがあります。
***** * Cannot build PL/Perl because libperl is not a shared library. * Skipped. *****したがって多くの場合、PL/Perlを構築するために、Perlを再度手動でビルドし、インストール しなければなりません。
Perlを再インストールした後に、PL/Perlを再度ビルドする時は、 Postgresソースツリーの src/pl/plperl にチェンジディレクトリして、 次のコマンドを実行します。
gmake clean gmake all gmake install
createlangコマンドは、データベースに言語を導入 するために使います。
$ createlang plperl template1template1へインストールすると、その後に作成される全てのデータベースにはその言語が 自動的にインストールされます。