|
|
Perlプログラム作成の基本構成 |
H.Kamifuji . |
Perlのプログラムを作成するにあたって、プログラムの記述方法や記述したプログラムがどのように処理されていくのかを確認しておきます。 当ページでは、Linux CentOS7 の Gnome で動作テストしています。 |
|
プログラムは複数の文で構成されています。まずはプログラムがどのような順番に処理されていくのかを確認していきます。プログラムは記述された順番に処理が行われていきます。順番にと言うのは上から下へ順に処理されていくということです。例で考えてみましょう。次のプログラムを例に考えてみます。 print "Orange\n"; print "Melon\n"; print "Lemon\n";「print」はまた別のページで詳しく見ていきますが文字列や数値などを画面に出力するために使われます。詳細は取りあえず気にしないで下さい。上記のプログラムを実行すると画面には次のように表示されます。 Orange Melon Lemonプログラムは記述された順に処理されますので、上から下へ向かって順番に処理されて行きます。ではプログラムがもし次のようだったらどうなるかを考えてみます。 print "Lemon\n"; print "Melon\n"; print "Orange\n";この場合も上から下へ順番に処理がされていきますので画面に次のように表示されます。 Lemon Melon Orange基本はこのようになっています。ただし、上から下へ向かって順に処理するだけだと不便なこともありますので、例えば条件判断を使ってこの場合はこちらの処理を行い、そうでない場合は別の処理を行うといったことも記述することは可能です。また決まった回数だけ同じ処理を繰り返すといったことも出来るようになっています。詳しい使い方は別のページで確認していきますが、ここではプログラムは上から下へ向かって順に処理がされていくということだけ覚えておいて下さい。 サンプルプログラム下記のサンプルを実行してみよう。# プログラムが処理される順番 print "Orange\n"; print "Melon\n"; print "Lemon\n";上記を「test1-1.pl」の名前で保存してから次のように実行して下さい。 [xxxxxxxx@dddddddddd Ini]$ perl test1-1.pl Orange Melon Lemon [xxxxxxxx@dddddddddd Ini]$記述された順に上から実行されていることが確認できます。 |
プログラムを記述する時には文字を出力したり計算を行ったりといった処理を記述していくことになります。その1つ1つの処理を文といいます。1つの文は1行に記述するのが基本です。例えば文字を出力するという文を3つ記述する場合は3行に分けて記述することになります。 print "Orange\n"; print "Melon\n"; print "Lemon\n";全ての文の最後にセミコロン(;)が付けられています。Perlでは文の区切り文字としてセミコロンを使いどこまでが一つの文かを示すことになっています。
プログラムが書かれた文;
プログラムの中で文が終わると改行していますがあくまでプログラムを見やすくするために改行を行っているだけなので1つの行の中に複数の文を記述することも可能です。 print "Orange\n";print "Melon\n";print "Lemon\n";1つの行に複数の文が記述されている場合は左から右へ順に実行されます。 サンプルプログラム下記のサンプルを実行してみよう。# 文の区切り print "Orange\n";print "Melon\n"; print "Lemon\n";上記を「test2-1.pl」の名前で保存してから次のように実行して下さい。 [xxxxxxxx@dddddddddd Ini]$ perl test2-1.pl Orange Melon Lemon [xxxxxxxx@dddddddddd Ini]$複数の文を1つの行にまとめて記述しているだけなので、実行された結果は全ての文を1つ1つ別の行に記述した場合と同じです。 |
プログラムを記述していく上で、この部分はどんな目的でプログラムを記述していたかを残しておくと後からメンテナンスを行う上で役に立ちます。実行はされずに単に説明だけのために記述する文をコメントといいます。 Perlでコメントを記述するには「#」の後に記述します。 #コメント文の中で「#」が現れるとそれより右側の文末までは全てコメントとなります。「#」は文の先頭に記述しその行を全てコメントとしてもいいですし、文の途中で記述してその位置より右側をコメントとしてもいいです。 # Disp Fruit Name print "Orange\n"; # Orange print "Melon\n"; print "Lemon\n";コメントはプログラムの実行時には無視されますので次のように記述したものと同じと解釈されます。 print "Orange\n"; print "Melon\n"; print "Lemon\n"; 複数行に渡るコメントの記述Perlでは他のプログラミング言語のように複数行にわたってコメントを記述するための仕組みは用意されていません。その為、複数行にわたるコメントの場合も全ての行の先頭に「#」が必要です。# Disp Fruit Name # 2017/02/22 # by Sakusha print "Orange\n"; # Orange print "Melon\n"; print "Lemon\n";Perlではコメントを書く場合には「#」しか用意されていません。ただ、コメントではないけれどコメントと同じようにプログラムの実行に影響を与えずに文字列を記述する方法があります。 POD(Plain Old Documentation)はPerlのプログラム中に(コメントよりも複雑なことが記述できる)ドキュメントを記述するための形式です。POD形式で記述されたドキュメントは別途用意されたコマンドを使ってドキュメントを整形して取り出す事が出来ます。(Javaで言うところのJavadocのようなものです)。 PODもコメントと同じようにプログラムに記述でき、プログラムの実行には影響を与えませんのでコメントの代わりにPOD形式でコメントとなる文章を記述することができます。 =pod コメント コメント =cut「=pod」から「=cut」までの間に記述されている内容についてはプログラムは何も行いません。 純粋なコメントを記述する為には複数行であっても「#」を使った方がいいと思いますが、プログラムの一部分などをデバック中にコメントにしたりする場合には覚えておくと便利です。 では簡単なプログラムで確認して見ます。 サンプルプログラム下記のサンプルを実行してみよう。# コメントの記述 =pod 画面出力サンプル 2008/01/22 =cut print "Orange\n"; #Orange print "Melon\n"; #Melon print "Lemon\n"; #Lemon上記を「test3-1.pl」の名前で保存してから次のように実行して下さい。 [xxxxxxxx@dddddddddd Ini]$ perl test3-1.pl Orange Melon Lemon [xxxxxxxx@dddddddddd Ini]$コメントが追加されているので記述された内容は増えていますが、コメントは実行時には無視されるため前のページのサンプルと実行結果は同じです。 |
Perlでプログラムを記述する上でプログラムの先頭に記述しておいたほうがいい2つの文があります。 use strict; use warnings;この2つの文を追加することで厳密な構文チェックと警告表示が行われるようになります。 use warnings「use warnings」を記述するとより詳細な警告を出力してくれます。簡単な例で試してみます。test4-1.pl # 厳密な構文チェック $num = 10; print $nun;上記を「test4-1.pl」の名前で保存してから次のように実行して下さい。 [xxxxxxxx@dddddddddd Ini]$ perl test4-1.pl [xxxxxxxx@dddddddddd Ini]$何も出力されていません。これは変数「num」の値を出力しようとしたのに間違って変数「nun」の値を出力しようとした為です。これは記述ミスなのですがPerlでは何事もないように実行してしまいます。 そこで「use warnings」を記述すると警告が表示されるようになります。簡単な例で試してみます。 test4-2.pl # 厳密な構文チェック use warnings; $num = 10; print $nun;上記を「test4-2.pl」の名前で保存してから次のように実行して下さい。 [xxxxxxxx@dddddddddd Ini]$ perl test4-2.pl Name "main::num" used only once: possible typo at test4-2.pl line 4. Name "main::nun" used only once: possible typo at test4-2.pl line 5. Use of uninitialized value $nun in print at test4-2.pl line 5. [xxxxxxxx@dddddddddd Ini]$今度は3つの行が表示されています。これは変数「num」が一度しか使われていないこと、変数「nun」が一度しか使われていないこと、そして初期化されていない値を使用しようとしていることを警告してくれています。このように警告を表示することで、プログラムミスを発見するのに役立ちます。 use strict次に「use strict」を記述するとより厳密にPerlの文法をチェックしてくれるようになります。例えば変数を利用する前に宣言を行わなければならなくなります。こちらも簡単な例で試してみます。test4-3.pl # 厳密な構文チェック use strict; use warnings; $num = 10; print $nun;上記を「test4-1.pl」の名前で保存してから次のように実行して下さい。 [xxxxxxxx@dddddddddd Ini]$ perl test4-3.pl Global symbol "$num" requires explicit package name at test4-3.pl line 5. Global symbol "$nun" requires explicit package name at test4-3.pl line 6. Execution of test4-3.pl aborted due to compilation errors. [xxxxxxxx@dddddddddd Ini]$エラーが表示されます。詳細な意味は省略しますが、グローバル変数をパッケージ名無しで利用しようとする時に表示されるエラーです。変数の前に「my」を付けることによりローカル変数とすることでエラーは表示されなくなります。 test4-4.pl # 厳密な構文チェック use strict; use warnings; my $num = 10; print "$num\n";上記を「test4-4.pl」の名前で保存してから次のように実行して下さい。 [xxxxxxxx@dddddddddd Ini]$ perl test4-4.pl 10 [xxxxxxxx@dddddddddd Ini]$今度はエラーも警告もなくプログラムが実行されました。 「use strict」や「use warnings」は必須ではありませんが、ミスの無いプログラムを作成するためにもプログラムの先頭に記述するようにして下さい。 |
|
|