Perl/はじめに

出典: フリー教科書『ウィキブックス(Wikibooks)』

プログラミング > Perl > はじめに

目次

[編集] TMTOWTDI

Perl(パール)とは、1987年ラリー・ウォールが開発したプログラミング言語です。PerlはC言語はもちろん、awksedのような様々なUNIXソフトウェアの伝統を受け継ぎ、多くの優れた機能を取り入れています。

PerlのモットーはThere's More Than One Way To Do It.(やり方は何通りもある)で、略してTMTOWTDI(ティムトゥディ)などと呼ばれます。これは「正しいやり方がいくつ存在してもよい」という考え方で、Perlの柔軟性を表しています。このことから、Perlは特にテキスト処理やCGIプログラミングの分野で多く用いられています。

PerlはC言語と比べて簡素であり、移植性が高い言語です。C言語では数百行で記述されるプログラムが、Perlでは数行で書けてしまうこともあります。

その一方で、省略を多用する文法や記号で表される特殊変数など、Perlのやり方に慣れるまでは少し時間がかかるかもしれません。一行でも多くコードを書き、Perlを身に付けましょう。

[編集] 前提条件

テキストエディタを用いて例に挙げられる通りのファイルを作成できることを前提としています。プログラミングそのものの概念についてはプログラミング(Wikibooks)プログラミング(Wikipedia)を参照してください。以降、断りのない場合はLinux上でPerl 5.8以降のバージョンを利用しているものとして説明します(シェルはbashを使用)。

[編集] 実行環境

[編集] Microsoft Windows

Microsoft Windows 環境では ActivePerlをインストールして実行します。

[編集] インストール

ActivePerl downloadからActivePerlを利用するOSにあわせてインストールパッケージを選択し、ダウンロードします。

[編集] 実行

[編集] Mac OS X, Linux, FreeBSD, その他 UNIX 環境

Mac OS X, Linux, FreeBSD, その他 UNIX 環境ではほとんどの場合、Perlは標準でインストールされています。「ターミナル」を起動し、コマンドプロンプト($, %, >などの記号)に続けてperl -vと入力し、[Enter](Return)キーを押し、以下のように表示されればperlが利用可能です。

% perl -v
This is perl, v5.8.7 built for darwin-thread-multi-2level

Copyright 1987-2005, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
%

[編集] PerlがインストールされていないUNIX環境

CPAN portsからバイナリパッケージをダウンロードできます。バイナリパッケージが存在しないプラットフォームの場合はPerlのダウンロードページからソースコードをダウンロードし、ビルドして実行してください。

[編集] Mac OS 9

MacPerlが利用できます。

[編集] 作成、実行の流れ

[編集] プログラムの作成

Perlはインタプリタ型の言語なので、ソースコードをそのまま実行できます。コンパイルの必要はありません(perlcc、PARなどを利用すれば可能)。

ソースコードの編集には好きなテキストエディタを使うことができます。 OS標準のメモ帳(Windows)、TextEdit(Mac OS X)、vi(*nix)などでも十分です。 Wordなどのワープロでも編集は可能ですが、標準では独自のバイナリファイルとして保存されるので注意してください。

[編集] プログラムの実行

テキストエディタでhello.plというファイルを作成し、コマンドプロンプト上で以下のように実行します。

hello.plの中身
print "Hello, World¥n";
print "Hello, Perl¥n";
実行の方法と画面出力
$ perl hello.pl
Hello, World
Hello, Perl
$

ほかの多くのプログラミング言語と同様に、Perlは構造化プログラミングというパラダイムを採用しています。プログラムの流れは逐次・分岐・反復の3通りしかありません。

つまり、原則としてプログラムはソースコードに記述された順に実行され、ifforなどの制御構造があったときだけ分岐・反復します。

ここではhello.plを作成して実行するまでを示しましたが、以後特に必要のない限りは単にプログラムの中身(コード)に続けて実行結果のみを表示するにとどめます。

[編集] Perlの基本機能の紹介

[編集] 変数代入

変数とはプログラムの動く流れの中で値が入力されたり変化するデータです。Perlでは変数名(例ではvar)の前に$, %, @などの接頭辞(シジルといいます)がつく表現を変数として扱います。

コード
$var = "Perl";
print "Hello, $var¥n";
実行結果
Hello, Perl


Perlでは例にあるような構造のない、ただ一つの値のみを保有するデータ(スカラーと呼びます)以外に、順番に並んだ複数のデータからなる配列、「色(リンゴ)→赤」「色(みかん)→橙色」のように名前(鍵、ここではリンゴやミカン)と関連づけられた複数のデータからなるハッシュ、より複雑なデータ構造を実現するリファレンスなどのデータを扱うことができます。 変数についての詳細は変数、データ構造で学びます。 リファレンスについての詳細はリファレンスで学びます。

[編集] 演算

Perlに数値の計算をさせることももちろんできます。

コード
$var = 5 * 120;
print "$var¥n";
実行結果
600

演算についての詳細は演算子で学びます。

[編集] 制御構造

原則としてPerlのプログラムは上に書かれているものから順に実行されていきますが、繰り返しや、特定の条件に応じて動作を切り替えることができます。

[編集] 繰り返し

ある条件にしたがって繰り返し同じ(あるいは似たような、共通のパターンのある)処理を行うことができます。

コード
foreach $num (1 .. 10){
  print $num;
  print " ";
}
print "¥n";
実行結果
1 2 3 4 5 6 7 8 9 10 

[編集] 条件分岐

ある条件をみたしているか(ここでは$a が 3 より大きいかどうか)を判定し、判定の内容により動作を切り替えています。

コード
$a = 5;
if ($a > 3){
  print "$a > 3\n";
}
else {
  print "$a <= 3\n";
}
実行結果
5 > 3

制御構造についての詳細は制御構造で学びます。

[編集] コメント

プログラミングの作成中に「プログラム内にメモを残しておきたい」「一時的にある動作を実行されないようにしたい」といった要求が生じることがあります。このような「プログラミングのコードに記載されるが動作しない箇所」のことを一般にコメントと呼びます。

コード
# print "ここはコメントの中¥n";
print "ここはコメントの外¥n";
実行結果
ここはコメントの外

Perlでは#以降の行端までがコメントとみなされます。C言語にあるような複数行にわたるコメントは原則的にサポートされていませんが、以下のような方法で実質的な複数行コメントを利用することができます。

[編集] Podによるコメント

コード
=begin comment
 
   ここの中は複数行にわたるコメント
   プログラムの動作には影響を与えない。
 
=end comment
 
=cut

Podという本来はプログラムのドキュメントを記入する機能を利用して複数行コメントを書きます。=の前に空白等の別の文字が入った場合はコメントにならないので注意が必要です。

[編集] __END__によるコメント

コード
__END__
ここにはどんなデータも置くことが出来ます

__END__は本来コメント用の構文ではなく、コードの終了を示す特殊リテラルです。 これ以降はプログラム内データとみなされ、プログラムとして実行されないので、どんな内容でも記述できます。

ちなみに、この内容はファイルハンドルDATAから読み込むことができます。

このページ「Perl/はじめに」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にノートへどうぞ。
ヘルプ