Perl入門 - インストールから簡単なサンプル実行までを徹底解説

公開日:2020.08.20

スキルアップ
 

Perlは1987年にリリースされた、比較的古いプログラミング言語です。テキストの整形や出力に最適化された言語と言われており、現在も更新が続けられ、最新のリリースは2020年6月と近年も活発にバージョンアップされています。

かつてはCGIといえばPerlと言われていたほどにWebアプリケーションの開発で活用されていた言語で、システム管理や文書管理など多くの分野で活用していました。

今回はこのPerlについて、開発環境のインストールから簡単なサンプルの実行まで、構文を解説しながら説明していきます。

Perlとは

Perl(パール)は1987年にラリー・ウォール氏によって開発された、強力な文字列処理能力を持つ、テキストの整形や出力に最適化されたスクリプト言語です。他のスクリプト言語と比較して高い処理速度を持つため、インターネット黎明期にはCGI(シージーアイ)(Common Gateway Interface)開発用の言語として使用され、多くの掲示板やメーリングリストなどのフリーソフトがPerlによって作成されました。

Perlは、文法の自由度が高い、構文の記述方法が簡単、簡潔にコーディング可能、高い後方互換性を保持、などの特徴があります。また、モジュールによる拡張が可能で、有志によって開発されたモジュールはCPAN(シーパン)(https://www.cpan.org/別ウィンドウで開く)というモジュールを管理するシステムを通じて配布されています。

現在Perlは、大手CMSや国内有数のブログサービス、フリマアプリなどでも開発言語の一つとして選ばれています。また、Webアプリケーション開発だけでなく、Linuxの管理ツールやフレームワークとしても活用されています。

古い言語であり、かつて多くの管理システムなどに採用された言語でもあるため、今なお多くの現場で改修・保守を行いながら利用されています。そのため、言語としての需要は安定しているといえるでしょう。

Perlのライセンス

Perlには、コピーレフト(著作権を保ったまま利用や改変が可能)のGNU GPLと、準コピーレフトであるArtistic License(アーティスティック ライセンス)という2つのライセンスがあります。どちらか一方、もしくは両方を採用することが可能ですが、利用にあたっては、ライセンスの条件をよく確認する必要があります。

Perlのインストール

Perlの実行環境としておすすめなのは、ActiveState(アクティブステート)(http://www.activestate.com/別ウィンドウで開く)が無料で提供するActive Perl(アクティブパール)です。Perlを実行するにはいくつかの方法がありますが、その中でも最も手軽です。インストールすれば手間のかかる環境変数の設定なども自動で行ってくれるため、手軽にPerlを導入できます。

トップページの中段あたりにある「Open Source Languages and Tools」から、Perlの「Download」を選択して、使用しているOSにあわせて最新のActivePerlを選択します。

ダウンロードしたセットアップを実行すると、このような画面が表示されます。

あとは画面の指示に従い、インストール先を選択して実行します。インストールに成功すると、自動的に環境変数も追加されています。

Perl入門 - コメントアウト・変数・演算子

まずはPerlの入門編として、コード上でのコメントアウトの方法と変数の設定、演算子について解説します。

コメントアウト

Perlのコメントアウトは、行頭の# で行います。C++の/* */のような、複数行をまとめたコメントアウトはありません。したがって、コメントアウトしたい行の全ての行頭に# を挿入する必要があります。

コメントアウトされた行は処理がスキップされるため、開発者のコメントやメッセージの他に、改修して使用しなくなったが今後のために残しておきたいソースコードなどにも使用されます。

Perlの変数

Perlの変数は、myを使用したレキシカル変数の宣言で行います。レキシカル変数とは他の言語におけるローカル変数にあたり、スコープが終了するとメモリから解放されます。

Perlにはlocalというキーワードが既に存在していますが、このlocalはパッケージ変数を一時的に保存・復元する機能を持っており、ローカル変数とは用途が異なります。そのため、用語として紛らわしくないよう、Perlではローカル変数に相当する変数をレキシカル変数と呼びます。

次の例では、$testというレキシカル変数に100を入力し、$sumというレキシカル変数に$testに1を加えた値を入力しています。また、@を使用することで配列を定義することができます。

例:

# 変数
my $test = "100";
$sum = $test + 1;
# 型を自動的に判別するため、文字列に1を足したように見えるこの処理でも、自動的に数値に変換され $sum には101が代入されています。

# 配列
my @tests = (1,2,3,4,5);

Perlの演算子

Perlの四則演算の表記は、非常にシンプルで直感的に普通の数式を書くのと同様の方法で記述できます。一般的なプログラミング言語と比較して、特別な記述ルールはありません。

例:

$test = 100 + 1; # 足し算:101
$test = 100 - 1; # 引き算:99
$test = 100 * 2; # 掛け算:200
$test = 100 / 2; # 割り算:50

剰余を求める場合、%を使用します。%の直後に入力されている数字で直前の数字を割り、その余りを結果として出力します。

n乗の場合、**のようにアスタリスクを2つ続けて記入します。直前の数字を直後の数字乗した結果を出力します。

例:

$test = 100 % 2; # 2で割った余り:0
$test = 100 ** 2; # 100の二乗:10000

最後に、インクリメント(変数内の値を1だけ増減させる処理)の表記の仕方です。これも他の言語とほぼ変わりません。変数に加算する時は++、減算する時は--を使用します。

例:

$test++; # 101
$test--; # 99

Perl入門 - if 文と for 文

続いてPerlでif文とfor文を表記する方法を解説します。他の言語と記述方法や処理に大きな違いはありません。

Perlの if 文

条件によって異なる処理を行うif~else文は、他の多くのプログラミング言語と同様の書き方で記述します。

$testの数値が100であった場合は「100 == 100」を、100ではなかった場合は「100 != 100」を表示する場合は、次のようになります。

例:

$test = 100;
if ($test == 100) {
print "$test == 100";
} else {
print "$test != 100";
}

Perlの for 文

for文は終了条件に到達するまで同じ処理を繰り返すループ構文です。他の言語と同様に、for()のカッコ内に指定されたループ条件が満たされる限り、同じ命令文を実行し続けます。

配列に設定された5つの数字を順番に$iに入力し、「Number is:(for文で指定された数字)」を表示する場合は、次のようになります。

例:

my @tests = (1,2,3,4,5);
for (my $i = 0; $i < @tests; $i++) {
print "Number is: " . @tests[$i]."\n";
}

Perl入門 - 実行してみよう!

それでは実際にActive Perlを使って、サンプルを実行してみましょう。今回は、Perlの実行をコマンドプロンプトから行います。

Perl で Hello World

まずはプログラミング言語に初めて触れる際の定番、Hello Worldの出力に挑戦しましょう。
下記のコードをコピーし、コマンドプロンプトのカーソル位置にペーストしてください。

サンプルコード:

perl -e "print 'Hello World';"

入力した次の行に「Hello World」が表示されれば成功です。

サンプルコードの解説

今回はシンプルに print 関数に ‘Hello World’ を渡すことで出力をかけています。Perlの実行コマンドである perl -e(-eはperlコマンドのオプション)は、続いて渡されるテキストをスクリプトとして処理してくれます。

Perl で if 文と for 文を実行

それでは次に、入門で紹介したif文とfor文を組み合わせた命令を実行してみましょう。先ほどは1行のソースコードだったため、perl -e を通して直接実行していましたが、今回は複数行になるため、perlのソースファイルであるplファイルを作成し、実行します。

以下のサンプルコードをコピーし、テキストエディタに貼り付けて、「test.pl」と名前を付け、デスクトップに保存してください。

サンプルコード:

my @tests = (1,2,3,4,5);
for (my $i = 0; $i < @tests; $i++) {
if (@tests[$i] <= 3) {
print @tests[$i]." = i <= 3\n";
} else {
print @tests[$i]." = i >= 4\n";
}
}

次にコマンドプロンプトに「perl test.pl」と入力し、エンターを押します。

ファイルに保存されているソースコードが実行され、計算結果が表示されました。

サンプルコードの解説

ここでは、まず、配列である@test に1~5の数字を代入しています。次に、for文を使ってこの5つの数字を一つずつ取り出します。取り出した数字は @test[$i]($iの中には、for文でカウントアップされる0~4の数字が順番に入ります)をif文で確認し、3以下の場合、7行目を、4以上の場合、9行目を実行します。

なお、先ほどと違い -e オプションは利用せず、そのままソースファイル名を渡しています。これにより、保存したサンプルコードをperlとして実行しています。

今も安定して動作するPerlを試してみては?

Perlは柔軟で可読性が高く、習得しやすい言語です。歴史が長いためオンラインに多くのサンプルコードが公開されているだけでなく、便利なライブラリも多数あるので、現在も安定して動作する言語として運用されています。

また、Perlは、インターネット黎明期から成長期にかけて、優れたスクリプト言語として多くのWebサイトで導入され、長年改修と保守を繰り返して運用が続いている言語です。単独の言語として爆発的な需要はありませんが、習得している言語の一つとしてPerlが扱えることはWeb系のエンジニアとしての強みとなるでしょう。

AKKODiSでは、Perlを含むさまざまなWeb開発言語の求人を扱っています。Web系エンジニアを目指す方も、既にエンジニアとして活躍している方も、習得言語の一つとしてPerlを試してみてはいかがでしょうか。

(2020年8月現在)

AKKODiSコンサルティングに関するお問い合わせ