はじめに
過去の業務でPerlを扱う機会が多く、実務を通してさまざまな処理を実装してきた。
近年ではPythonやGoなどが注目されることが多いが、現在でもPerlは一部の業務システムやWebシステムで利用されている。
本記事ではPerlを初めて触る人向けに、
- Perlとはどのような言語なのか
- Perlの特徴
- モジュールとは何か
- 基本的なコードの書き方
について紹介する。
Perlとは
Perlは1987年にラリー・ウォール氏によって開発されたプログラミング言語で、
Practical Extraction and Report Language(実用的抽出・報告言語) の略称である。
文字列処理やテキスト処理を得意としており、ログ解析やファイル操作、システム管理、CGIを利用したWebアプリケーション開発など、幅広い分野で利用されてきた。
現在ではPythonやRubyなどの普及により新規開発で採用される機会は減少しているものの、既存システムでは現在も多く利用されている。
Perlの特徴
1. 文字列処理が得意
Perl最大の特徴は、文字列操作や正規表現が非常に強力である点だ。
例えば文字列の置換は次のように簡潔に記述できる。
my $text = "Hello Perl";
$text =~ s/Perl/World/;
print $text;
# 実行結果
# Hello World
ログ解析やCSV加工などでは、この強力な文字列処理が大きな武器となる。
2. CPANによる豊富なモジュール
Perlには CPAN(Comprehensive Perl Archive Network) と呼ばれる巨大なモジュール公開サイトが存在する。
認証、データベース接続、CSV操作、JSON操作など、多くの機能がモジュールとして公開されている。
代表的なモジュールには次のようなものがある。
| モジュール | 用途 |
|---|---|
| DBI | データベース接続 |
| Time::Piece | 日時操作 |
| JSON | JSONの変換 |
| Text::CSV | CSV操作 |
| LWP::UserAgent | HTTP通信 |
| Encode | 文字コード変換 |
これらを利用することで、自分ですべてを実装する必要がなくなる。
3. 柔軟な書き方ができる
Perlは自由度が高く、同じ処理でも複数の書き方が存在する。
例えば配列の出力は次のように書ける。
foreach my $item (@array) {
print "$item\n";
}
あるいは
print "$_\n" for @array;
どちらも同じ結果になる。
自由度が高い反面、チーム開発ではコーディング規約を定めることが重要になる。
モジュールとは
モジュールとは、処理をまとめた部品である。
他の言語でいうライブラリやパッケージに近い存在だ。
例えばJSONを扱う場合は、
use JSON;
DBへ接続する場合は、
use DBI;
CSVを扱う場合は、
use Text::CSV;
のように読み込む。
必要な機能だけを読み込めるため、コードの再利用性や保守性が向上する。
基本的なコードの書き方
Hello World
use strict;
use warnings;
print "Hello World\n";
最初に
use strict;
use warnings;
を書くことが一般的である。
- strict:変数宣言漏れなどを防ぐ
- warnings:警告を表示してバグを見つけやすくする
変数
Perlでは変数の種類によって記号が異なる。
my $name = "Alice";
my @list = ("A", "B", "C");
# ハッシュのキーはシングルクォート(')やダブルクォート(")で囲んで記述することもできる
# 以下のように囲わなくてもOK
my %score = (
Alice => 90,
Bob => 80
);
| 記号 | 種類 |
|---|---|
| $ | スカラー変数 |
| @ | 配列 |
| % | ハッシュ |
Perl初心者が最初に覚えるべきポイントの一つである。
条件分岐
my $score = 80;
if ($score >= 80) {
print "合格\n";
} else {
print "不合格\n";
}
if文の書き方はC言語系の文法に近い。
繰り返し
my @list = ('Perl','CPAN','SQL');
foreach my $item (@list) {
print "$item\n";
}
# 実行結果
# Perl
# CPAN
# SQL
または
# 0 .. 9 と記述することで0から順番に1ずつ増えていく
for my $i (0 .. 9) {
print "$i\n";
}
# 以下の書き方も同様の結果
for (my $i = 0; $i < 10; $i++) {
print "$i\n";
}
# 実行結果
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
foreachはPerlで非常によく利用される。
他にもC言語やJavaなどにもあるようなwhileも存在する。
サブルーチン
# サブルーチンのブロック内先頭でshiftとすることで引数を受け取れる
sub hello {
my $name = shift;
print "Hello $name\n";
}
hello("Perl");
# 実行結果
# Hello Perl
処理を関数としてまとめることで、コードの可読性や再利用性が向上する。
実務でよく利用するモジュール
実務では、標準機能だけで開発することは少ない。
例えば次のようなモジュールは利用頻度が高い。
- DBI(データベース操作)
- JSON(JSONの変換)
- Encode(文字コード変換)
- File::Spec(ファイル操作)
- File::Basename(ファイル名取得)
- Time::Piece(日時操作)
- Text::CSV(CSV操作)
用途に応じてモジュールを組み合わせることで、効率的に開発できる。
まとめ
Perlは歴史の長いプログラミング言語であり、現在でも多くの業務システムで利用されている。
特に文字列処理や正規表現、ファイル操作を得意としており、豊富なCPANモジュールによって高い拡張性を持つ。
初めてPerlを学ぶ場合は、まず次の3点を理解するとよい。
- Perlの基本文法
- 変数($・@・%)の違い
- モジュールの利用方法
これらを押さえることで、既存のPerlプロジェクトも読みやすくなり、実務でもスムーズに開発へ参加できるようになるはずだ。