Perlプログラミングの基礎【現役エンジニアがわかりやすく解説】

PROGRAM

Perlプログラミングの基礎を知りたい方に。

この記事を読まれている方は、

  • Perlのプログラミングがどんなものか知りたい
  • Perl言語の簡単な書き方が知りたい
  • Perlが使われる場面を知りたい

おそらくこのように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役のエンジニアが、Perlプログラミングの基礎を解説しています。

プログラミング言語のPerlの特徴

プログラミング言語のPerlの特徴

Perlはプログラミング言語のひとつで、動的型付けのスクリプト言語で、オブジェクト指向型の言語です。

動的型付けとは、簡単に言うと、データを文字列型や数値型、論理型などに分ける必要がないということです。

スクリプト言語とは、プログラム実行前にコンパイルという、書いたプログラム文を中間言語に変換する作業の必要がない言語のことで、書いた後はすぐにプログラムを実行することができる言語のことです。

一方、スクリプト言語と対をなすコンパイル言語とは、プログラムの実行前に、開発者の方でコンパイラーを使って構文チェックなどをしたうえで中間言語に変換しないと動作しない言語のことです。

一般に、スクリプト言語は、処理速度がコンパイル言語に比べて遅くなります。速度が求められる処理では、コンパイル言語が使用されることが多いです。
Perlの速度の目安としては、PHPより速い処理もありますし、遅い処理もあるイメージです。

オブジェクト指向型言語とは、オブジェクトという概念を持つ言語のことで、簡単に言うと、データ構造として、配列や構造体に加えて、オブジェクト(クラス)があるということです。
オブジェクトのおかげで、ソースコードのメンテナンスがしやすかったり、機能の流用ができます。

しかし、Perlのオブジェクト指向は少し特殊で、クラスがありません。そのため、モダンなオブジェクト指向の記述ができないため、もし気になるようでしたら、他の言語を選択する方が良いです。

Perlの良さとしては、動的型付けのスクリプト言語のため、比較的簡単にプログラムを組み、実行することができることが挙げられます。
C言語に慣れている方からすれば、書きやすく感じるでしょう。

一方、デメリットとしては、PerlユーザーがPHPやRubyに完全に流れているということと、オブジェクト指向への対応が後付けになってしまったため、モダンな記述の仕方ではないことなどが挙げられます。

徐々にPerlで開発する方の人数が減っているため、これから学習する方には積極的に勧める言語ではないことだけは確かです。

Perlの用途

Perlの用途

Perlは動的型付けのスクリプト言語ということもあり、さほど速度が重視されない開発で利用される言語です。

PerlはかつてCGIとしてレンタルサーバー上などで使われていました。掲示板やチャットシステムなどのプログラムはPerlで書かれていたものが多かったです。そのため、一昔前では素人から玄人まで、とても愛されていたWeb系の言語でした。しかし、最近ではその地位を完全にPHPに奪われてしまっています。

PHPの方がオブジェクト指向への対応や書きやすさがさらに向上しているからというのもありますし、便利なフレームワークなどが充実しているからというのもあります。

MVCフレームワークへのキャッチアップやオブジェクト指向の習得を視野に入れると、これからプログラミングを学習する方にはPerlよりそのほかの言語を、Perlに近い言語であれば特にPHPをオススメします。

Perlの書き方

Perlの書き方

ここでは簡単に書き方を少しだけ紹介します。実際に始める気になったら、ぜひ参考書などの教材を参考にして、試してみて下さい。

Hello World!を画面に出力する

まずはお決まりのHello World!という文字列を画面に出力する方法から。

print "Hello World!";

これで出力することができます。
C言語やJavaなどとは異なり、main関数を書かなければ動かないということはなく、いきなりそのまま命令文を書くことができます。クラスもなしで動くので、オブジェクト指向は強制されていません。

コンパイル言語とは異なり、スクリプト言語であるPerlはコードを書いて保存すれば、すぐにでもプログラムを実行することができます。

変数宣言と分岐処理

次は少し踏み込んで、変数宣言と分岐処理をしてみます。

my $age = 19;
if ($age < 20) {
    print "未成年";
} else {
    print "成人";
}

上記の例では、まずageという数値型の変数を作り、その中に19という数値を入れています。
次にageが20未満であれば”未成年”という文字列を、それ以外であれば”成人”という文字列を出力するような分岐処理をしています。

配列と繰返処理

続いて、配列の使い方と繰返処理について、解説します。

ここでは配列を作って、以下のようにデータを出力することにしましょう。

佐藤,田中,小林

これを出力するコードは以下です。

my @students = ("佐藤","田中","小林");

for (my $i = 0; $i < @students; $i++) {
  print $students[$i];
  if ($i < @students-1) {
      print ",";
  }
}

上記の例では、まず配列studentsに「佐藤」「田中」「小林」の3つの文字列を格納しています。
その後、数値型のカウンタ変数iを0に初期セットし、配列studentsの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、print関数を使い、配列studentsのi番目の要素の値を出力し、最後の要素以外、その後に「,(カンマ)」を出力しています。

構造体の取り扱い

最後に構造体の取り扱い方法について解説します。

ここではエクセルのようなデータを作って、以下のようにデータを出力することにしましょう。

名前:佐藤,性別:男性
名前:田中,性別:女性
名前:小林,性別:女性

これを出力するコードは以下です。

my %first_row = ("A"=>"佐藤","B"=>"男性");
my %second_row = ("A"=>"田中","B"=>"女性");
my %third_row = ("A"=>"小林","B"=>"女性");

my @excel_data = (\%first_row, \%second_row, \%third_row);

for(my $i = 0; $i < @excel_data; $i++) {
    print "名前:",$excel_data[$i]{'A'};
    print ",";
    print "性別:",$excel_data[$i]{'B'},"\n";
}

上記の例では、まずfirst_row, second_row, third_rowという3つの連想配列を作り、それぞれのAというキー(列)に名前を、Bのキーに性別の値を入れていきます。
そして、それら全てをexcel_dataという配列に入れます。
その後、数値型のカウンタ変数iを0に初期セットし、配列excel_dataの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、print関数を使い、配列excel_dataのi番目の要素の中のA列とB列の値を出力しています。

まとめ:Perlは書きやすいが、オワコン言語

まとめ:Perlは書きやすいが、オワコン言語

Perlの良さを簡単にまとめると、以下のとおりです。

  • コードが書きやすい ← 書き方がシンプル
  • すぐに実行できる ← スクリプト言語
  • 環境を用意しやすい← XAMPPですぐ動かせる

つまり、PerlはPHPのように書きやすく、スクリプト言語でXAMPPでも動くことから、環境を用意しやすい言語ということになります。

しかし、この特徴はPHPと全く同じであり、さらにPHPの方がオブジェクト指向への対応と書きやすさが向上していて一枚上手なため、実際の開発現場ではPHPが採用されるケースの方が多いです。

Perlは独学が十分可能な言語ですが、もし独学でできなさそうな方は、プログラミングスクールも手段の一つに入れると良いと思います。