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[編集]

Windows版については、Perl公式サイトは提供していないです。

なのでWindowsユーザーの場合、企業の提供するPerl実行環境を使うことになります。

Windows 環境では ActivePerlをインストールして実行できます。 ただし2020年現在では、アカウント登録が必要です。


他の企業の提供しているWindows用Perlもあり、Strawberry Perl というのもあります。Strawberry Perl の中身は単に、Unix版PerlをMinGW(gccのwin移植版)を使ってWindows対応させたものです。


インストール[編集]

上記サイトからインストールパッケージを選択し、ダウンロードします。

Strawberry Perl の場合、環境変数の設定は不要なので(インストール時に自動で設定)、インストール直後に使える。


実行[編集]

Strawberry Perl の場合、Windows用のコマンド端末(DOSプロンプト)で使える。

コマンドに、バージョン番号を表示する引数 -v を一緒に

perl -v

と入力してみて、

表示結果
C:\Users\ユーザー名>perl -v

This is perl 5, version 30, subversion 2 (v5.30.2) built for MSWin32-x64-multi-t
hread

Copyright 1987-2020, 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.


C:\Users\ユーザー名>

のように出れば、とりあえずインストールは成功していることが確認できる。


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

Linux の場合、Perl は初期設定ではインストールされていないので、コマンド端末などで追加インストールする必要がある。

Fedora Linux の場合なら、OS公式リポジトリに perl もあるので、コマンド

sudo dnf install perl

でインストールできる。


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

% perl -v

This is perl 5, version 26, subversion 1 (v5.26.1) built for amd64-freebsd-thread-multi

Copyright 1987-2017, 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 syntaxhighlight 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環境[編集]

主要なOSならPerlをサポートしていると思いますが、もし万が一に各OSの公式リポジトリにperlが無い場合でも、 CPAN portsからバイナリパッケージをダウンロードできます。

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

Mac OS 9[編集]

MacPerl が利用できます。

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

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

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

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


なお、 python (別のプログラム言語のひとつ)のような対話モード(コマンド端末に直接コマンドを入力して実行するモード)はperlには無いです。(標準モジュールではない。追加の専用モジュールが必要になる。)


なのでPerlでは実行したい場合には毎回、テキストエディタなどに実行したいコードを書いてセーブ保存してから、そのファイルをコマンド端末から実行することになります(あるいはApacheやブラウザなどのweb環境で実行)。

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

テキストエディタでhello.plというファイルを下記のように作成し、

hello.plの中身
print "Hello, World\n";
print "Hello, Perl\n";


実行の方法

コマンドプロンプト上で

perl hello.pl

のように入力すると、hello.pl を実行できます。

つまり

perl ファイル名

という書式です。


画面出力
Hello, World
Hello, Perl


なお、大まかにコードを解説すると、

print というのは、それを実行すると文字表示をしてくれる「組み込み関数」というものの一つ(ひとつ)。
Perlの文字列は、二重引用符( " 文字列 " )でくくる。一重引用符( ' 文字列 ' )だとPerlの場合、改行文字や変数などを使えないなどの不便がある。


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

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

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

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

変数代入[編集]

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

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


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

演算[編集]

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

コード
$hensu = 5 * 120;
print "$hensu\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";
実行結果
ここはコメントの外

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

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

コード
=begin comment

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

=end comment

=cut

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

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

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

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

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