今回の記事では数あるプログラミング言語の中からPerlにスポットを当てて解説していきます。

Perlのスクリプト言語としての特徴・使い方・インストール方法・正規表示の書き方・コマンドオプションまでご紹介していきます。

Webサービスの開発などによく用いられるPerlですが他のプログラミング言語との違いや特徴から解説をはじめていきます。


Perlにおける15の特徴

ここからはPerlの特徴や他のプログラミング言語との違いなど15項目にまとめて解説していきます。


【特徴1】Webサービス開発に用いられるスクリプト言語

Perlは1987年開発の歴史の古いスクリプト言語であります。

主だったスクリプト言語としてはPython(1990年開発)・Ruby(1993年開発)・Java(1995年開発)・PHP(1995年開発)などがあります。

Perlは簡単に短く書けることが特徴のスクリプト言語なので初心者にも学びやすくWebサービス開発に用いられることが多い言語です。

PythonやRubyなどはPerlの影響を受け改良して作られたプログラミング言語だといえます。


【特徴2】記述がシンプル

先にも解説したようにPerlはスクリプト言語のひとつなので記述をシンプルして書くことができます。

Perlの型は動的で関数呼び出しも動的ですが型を意識することが少ないので初心者でも書きやすいスクリプト言語です。

そのため動かしトライアンドエラーを繰り返しながらプログラムを作っていけるメリットがあります。


【特徴3】実行速度が早くコンパイル不要

Perlはスクリプト言語のためスクリプト実行の際にコンパイル不要のため実行速度が早いことがメリットとなります。

また静的型言語はコンパイル実行の際遅い傾向にありますがPerlは動的型言語のためコンパイル速度が速い傾向にあります。

プログラミングを構築するにはトライアンドエラーを繰り返し実行がPerlは実行速度が速いため快適に作業を進めることができます。


【特徴4】シェルとC言語に似た文法

PerlはUnix生まれの言語のためシェルの不便さを改善したという傾向があります。

またif・()・{}・forなどの使い方を見てわかるようにC言語の文法とよく似ているともいわれています。

Perlは識別子であるuse・myなど普通の人がイメージしやすいよう感覚的に馴染みやすいように作られた言語です。


【特徴5】最適化されたテキスト処理

Perlは文字列と数値を自動変換・文字列に関する関数が便利・正規表示が組み込まれているなど最適化されたテキスト処理ができます。

テキスト処理は頻繁に行われる処理のため最適化された設計ができることはPerlのメリットとなります。

システム管理をする上で集計やログ整形といった頻度の高い作業にもPerlは使うことができます。


【特徴6】ライブラリが多い

Perlには多くのライブラリがありCPANというサイトにアクセスすれば誰でも利用することができます。

CPANのライブラリは運用が簡単にすることができるだけでなく非常に安定しているため安心して利用することができます。


【特徴7】きれいな設計が可能

Perlはクラスを作成する際オブジェクト指向をサポートしているので問題なく作業することができます。

大規模なプログラミングの場合にも上手にクラス分けを設計すれば全体をきれいに設計することも可能です。


【特徴8】Windowsにも対応

PerlはWindowsにも対応しておりActivePerlStrawberry Perl for Windowsなどを利用してインストールすることができます。

これらを活用すればPerlに詳しくない人でも簡単に使えるようになります。


【特徴9】メモリが最小限におさえられる

スクリプト言語の中でも少ないメモリで動かすことのできるのがPerlのいいところです。

作業環境にもよりますがメモリを次々と追加しなければならないときでも少ないメモリで動くPerlなら限られた予算内でも対応できます。


【特徴10】Linux/Unix環境にデフォルトでインストールされている

Perlは歴史あるスクリプト言語のためプログラミング言語として広く普及しています。

そのためほとんどのLinux/Unix環境にインストールされているためプログラムを作成すれば配布も簡単にできます。


【特徴11】スクリプト言語のパイオニア的存在

先にも記したようにPerlは開発された時期が早く他のプログラミング言語に比べ歴史があります。

PHP・Ruby・Pythonといった需要のあるプログラミング言語はPerl開発後に出現したため言語設計のアイデアはPerlが元になっています。

ラリー・ウォールのおかげで開発されたPerlがなければPHP・Ruby・Pythonも生まれていなかったかもしれません。

そのためPerlはスクリプト言語のパイオニア的存在ということができます。


【特徴12】豊富なドキュメント

Perlは長年使用されているプログラミング言語のためドキュメントが豊富にあります。

後方互換性のあるPerlは過去に残されたサンプルをそのままコピーして動かすことができます。

これら豊富なドキュメントが存在することは初心者には大きなメリットとなります。

後方互換性が壊れた言語ではこうはいかずドキュメントは使いにくく古いものなのか新しいものなのかの判断もしなければなりません。

これらと比べるとドキュメント上のサンプルをそのまま動かすことのできるPerlの存在は優秀であります。


【特徴13】高い応答性

Perlは多くのプロジェクトが作られても応答性の落ちないシンプルな参照カウント方式によるGC方式になります。

オブジェクトへの参照が無くなり次第開放されますがパフォーマンスに関しての影響は小さいです。


【特徴14】応用範囲が広い

PerlはWebアプリケーションの分野で活用されシステムを一貫的に記述し広い範囲で保守性やメンテナンス性の優れた運用ができます。

また後方互換性に優れていることで長期間利用するシステムの記述がしやすい利便性のある言語です。


【特徴15】パフォーマンス

Perlは利用頻度の高いテキスト処理を適切にすることができます。

パフォーマンス的な問題が生じた場合はC/C++のバインディングを書くことによって速やかに解決することができます。

Perlは静的型言語に数値計算の速度は劣りますがC/C++のバインディングを書くことで静的型言語に劣らないパフォーマンスを出します。


【Perlの弱点1】後発のスクリプト言語に勝てない

Perlはスクリプト言語のパイオニア的存在として歴史がありますが後に出現したPythonやRubyに比べWeb開発に不利な点があります。

Pythonは誰が書いても同じ様なプログラムになるように設計されておりPerlより保守性の点で勝ります。

Rubyによりオブジェクト指向で書かれたプログラムは再利用や仕様変更がしやすく柔軟性という点でPerlに勝ります。

これらに対しスクリプト言語のPerlは保守性の点でPythonに柔軟性の点でRubyに劣っていると言わざるを得ません。


【Perlの弱点2】

PerlはフレームワークとCMSという点で後発の他言語に遅れをとっています。

フレームワークにおいてはRubyによる「Ruby on Rails」の人気に完全に押されシェアを奪われその差を埋めることができていません。

CMSにおいては後発のWordPressが無償で提供されているのに対しPerlのMovableTypeは有償となっためユーザーが離れてしまいました。

Perlに優秀なフレームワークの存在とMovableTypeの有償化がなければ一時期のような人気を維持できたかもしれません。

それらが改善される様子は今のところ見受けられません。


Perlの書き方の基礎

ここではPerlの書き方の基礎を簡単にまとめておきました。

7つの項目に分けて解説していきます。


1.文法のチェック

文法のチェックをするためには下記の2行を記述して下さい。

use strict;
use warnings;

上記の2行を記述することで文法のチェックが行われます。

コードの品質が向上しソースコードの記述が速やかになります。


2.コメント

Perlのコメントの記述になります。

# コメント


3.print関数

print関数は文字列を出力する際に記述します。

print “Hello world”;

Perlは標準関数や事前に定義している関数によって括弧を省略することができます。


4.コンパイルのチェック

コマンドを下記のように記述してコンパイルのチェックを行います。

perl -c script.pl


5.変数宣言

変数にはスカラ変数・配列変数・ハッシュ変数があります。

Perlの変数はmyを記述して宣言を行います。

# スカラ変数
my $num;
# 配列変数
my @students
# ハッシュ変数
my %month_num;


6.デバッガ起動

Perlにはデバッガがデフォルトで付いており起動するには下記のように記述します。

perl -d script.pl


7.スクリプト実行

コマンドラインで下記のように記述してスクリプト実行を行います。

perl script.pl

リダイレクトを使用して出力結果をファイルに書き出します。

perl script.pl > file.txt

Windowsではコマンドプロンプトを使用してスクリプト実行が行えます。


Perlのインストール方法(Windows)

WindowsユーザーでもPerl使うことができる3つのインストール方法をご紹介します。


【方法1】Strawberry Perlをインストールする

Strawberry PerlはWindowsにインストールすることでPerlが使用できるようになるディストリビューションです。


【方法2】ActivePerlをインストールする

ActivePerlもWindowsにインストールすることでPerlを使用することができるディストリビューションになります。


【方法3】msys2をインストールする

msys2をインストールすることによってWindows上でLinuxの環境が完全に再現できることによりPerlを使用することができます。


Perlのインストール方法(macOS)

ITエンジニアならmacOSユーザー率が高いはずです。

macOSにはデフォルトでPerlが標準装備されていますがPerlをインストールすることもできます。

パールを使ったWebサイト公開に際してはUnix/Linuxのサーバーに配置することとなります。

そのためUnix/Linux自体を開発環境にしてしまえば開発環境との差がなくなり作業がしやすくなります。


【基礎編】Perlの「正規表現」の書き方

ここではPerlの基礎的な「正規表現」の書き方をご紹介します。

正規表示で文字の集合を表すには下記の記述があります。

. 改行を除くすべての文字
¥d 数字
¥D 数字以外の文字
¥w ワード文字(「a~z」「A~Z」「0~9」 アンダーバー「_」)
¥W ワード文字以外の文字
¥s 空白文字( スペース「 」、タブ文字「\t」、改行文字「\n, \r」など)
¥S 空白文字以外の文字
^ 文字列の先頭
$ 文字列の末尾
¥b ワード文字の境界


改行を除く任意の一文

改行を除く一文の記述には「.」を使います。

a
b
c ⇒ .
)
@

「.」を改行にマッチさせる時は「s」の正規表示オプションを記述します。

# .を改行を含む任意の文字にマッチさせる
$str =~ /./s;


数字

「¥d」を記述して数字を表示します。

0
1
2 ⇒ ¥d
8
9


空白文字

改ページ・タブ・スペース・キャリッジリターン・ラインフィードなどが空白文字となります。

「¥s」を記述して空白文字を表現します。

スペース 「」
タブ 「¥t」
改ページ「¥f」 ⇒ ¥s
キャリッジリターン「¥n」
ラインフィード「¥r」


数字以外

「¥\D」を記述して数字以外の文字を表現します。

数字「¥d」以外 ⇒ ¥D


空白文字以外

「¥S」を記述して空白文字以外の文字を表現します。

空白文字「¥s」以外 ⇒ ¥S


ワード文字

「¥w」を記述してワード文字を表現します。

アルファベットと数字のアンダーバーの集合をワード文字といいます。

A-Z
a-z
⇒ ¥ w
0-9
_


ワード文字以外

「¥W 」を記述してワード文字以外を表現します。

ワード文字「\w」以外 ⇒ ¥W


文字列の先頭

「^」を記述して文字列の先頭を表現します。

abcppp
abcqqq ⇒ ^abc
abcrrr


文字列の末尾

「$」を記述して文字列の末尾を表現します。

pppabc
qqqabc ⇒ abc$
rrrabc


ワード文字の境界

「¥b」を記述してワード文字の境界を表現します。

abc/
abc@ ⇒ abc¥b
abc


Perlのコマンドオプション一覧

Perlのコマンドオプションを一覧でまとめておきます。

【Perlのコマンドオプション一覧】

オプション 説明
-0xxx 入力レコードの区切り文字($/)を8進数で指定します。
-a オートスプリットモード。-n または -p と組み合わせた場合、入力をスペースで自動的に区切って、予約変数 @F に代入します。
-c スクリプトの構文チェックのみを行い、実行せずに終わります。
-d perl をデバッグモードで起動します。
-Dnumber デバッグフラグ。このフラグを使用するには、perl がデバッグモードでコンパイルされている必要があります。
-e script script を perl のスクリプトとして実行します。例えば、「perl -e “print 5 * 3″」 は 5 * 3 の結果 15 を表示します。
-iext perl -p -i.bak -e “s/\r\n/\n/” file1.txt とすると、file1.txt ファイルに対して s/\r\n/\n/ の操作(Windows 形式の改行から UNIX 形式の改行への変換)を行い、file1.txt を更新します。また、file1.txt のバックアップを file1.txt.bak として残します。
-Idir C言語プリプロセッサがヘッダファイルを探すディレクトリ(省略時は /usr/include と /usr/lib/perl)を指定します。
-loct 8進数 oct で指定した値を特殊変数 $\ に設定します。このコードは、すべての print 文の末尾に付加されます。
-n スクリプトを while (<>) { … } で囲んで実行します。
-p スクリプトを while (<>) { … } continue { print; } で囲んで実行します。
-P スクリプトを実行する前にC言語のプリプロセッサ処理(#define #ifdef #else #endifなど)を行います。
-s コマンドラインで、オプションに対応する変数を 1 に設定します。例えば、perl -s script -abc file.txt は、$abc が 1 となり、@ARGV は file.txt のみを含んだ状態で実行されます。
-S 環境変数 PATH からスクリプトファイルを探します。
-u スクリプトをコンパイルした後、コアダンプさせます。このコアファイルを undump コマンドで実行することにより、ファイルサイズは大きくなりますが、perl の初期化処理を高速化することができます。
-U ディレクトリ削除など危険とされている機能を有効化します。
-v perl のバージョン情報を表示します。
-V perl の詳しいバージョン情報を表示します。
-w 未使用変数、未初期化変数の参照などの警告を表示します。
-xdir #! で始まって perl という文字を含む行までをコメントとして読み飛ばします。ディレクトリ dir を指定した場合は、そのディレクトリに移動してから処理を行います。

出典元:https://www.tohoho-web.com/perl/app2.htm


まとめ

いかがだったでしょうか。

Perlの特徴や使い方など同じスクリプト言語である他の言語との比較などを詳しく解説しました。

Ruby・PHP・Pythonといった後発のスクリプト言語はPerlを元に設計されそれぞれに優れたプログラミング言語として需要があります。

Ruby・PHP・Pythonなどにシェアを奪われ気味のPerlですがドキュメントが豊富にありコピーするだけで直ぐに動かせます。

Perlはスクリプト言語のパイオニア的存在ですが実行速度が早くコンパイル不要のためまだまだ需要があります。

Perl活用の上で今回の記事が何かの参考になっていたら嬉しく思います。