(1) (2) (3) (4) (5) (6) (7)

Perl 入門 (1)

今回から簡単なプログラミングの勉強をします。 ここではPerlという言語を扱うことにします。 作成するプログラムはそれ自体のみでは実行することができません。 実行するコンピュータに Perl がインストールされている必要があります。 Windows 用の Perl としては Active Perl が有名です。 大学のWindows機にはすでに日本語化された Active Perl がインストールされています。 自宅のパソコンでも試してみたい場合は以下からファイルをダウンロードし、 付属ドキュメントに従ってインストールしてください。

Vector のサイトのPerl
最新のPerl(perl.exe)を使いたい場合は直接 http://www.activeware.com/からダウンロードして下さい。

はじめてのPerl

まず、自分の機械で Perl が使えるかどうか試してみます。 オリジナルの英語版の実行ファイルは perl.exe 、日本語化されたものは jperl.exe です。 コマンドプロンプトを開いて次のコマンドを実行してください。

I:\>jperl -v
    ^^^^^^^^ ここを入力

バージョン情報などが表示されれば、jperl が使える状態になっています。 これから作成するファイルも各自のwebページに載せていただきますので、 まず、nyuumon2フォルダに移動しておきます。そしてメモ帳(notepad)で 新しく nm001.pl というファイルを作ります:

I:\>cd nyuumon2
I:\nyuumon2>notepad nm001.pl

nm001.plの中味は次のようにします。ただ1行だけのプログラムです。 このようなファイルをスクリプト・ファイルと呼びます。


 1: print("はじめてのPerl\n");
    ↑
    ここから入力開始

行の先頭にある数字およびその後ろのコロン(:)とひとつの空白は行番号を 表すためのものです。プログラムには含まれません。 printから入力してください。 コピーして貼り付けたりしないでまじめに入力してみましょう。 入力できたら、保存して下さい。 このときメモ帳は開いたままにしておきます。 そして次のように作成したプログラムを実行します:

I:\nyuumon2>jperl nm001.pl
はじめてのPerl

I:\nyuumon2>

エラーが出る場合はそのメッセージを注意深く読んで対処してください。 スクリプトに誤りがある場合は、メモ帳をまだ閉じていないはずですので、 スクリプトをうまく修正して、再度試みてください。

さて、このスクリプトを解説します。 まずprintはPerl に用意された関数です。

関数

関数は数学でf(x,y,z)と書くのと同じで、

関数名(x, y, z, …)
のように書きます。 一般にものをコンマで区切って並べ( )で囲んだものを 「リスト」といいます。 関数名とリストの先頭「(」の間には空白文字を置くことができます。 まぎらわしくない場合、代入する値(引数)を囲む括弧(   )は省略できます。 その場合関数名と引数の間には必ず空白文字をはさみます。

関数には3つの要素があります。
  1. 引数(上述)
  2. 戻り値=関数の出力する値
  3. 副作用
この3つの要素のいずれかがない場合もあります。 上のprint関数の場合は、それぞれ順に
  1. "はじめてのPerl\n"という文字列
  2. (画面出力が成功すれば)「真」(1)
  3. 引数として与えられた文字列を画面に出力
となります。この場合、戻り値よりも副作用のほうが重要な役割を果たしています。

関数は自分で定義することもできますが、あらかじめPerlに組み込まれた関数 (built-in functions)もたくさんあります。 使用しているパソコンに Active Perl のドキュメントがインストールされていれば、 多分、以下で読むことができます。

上でも書きましたが、二重引用符号で囲まれた部分は「文字列」です。 最後の\nは「改行文字」を表します。 二重引用符号の代わりに一重引用符号' 'で囲んでもやはり 同じく文字列を表します。両者には若干違いがあります。 試しに、上の例の二重引用符号を一重引用符号に変えて実行して見て下さい。 詳しいことは、また後で説明します。

最後のセミコロン;は文の終わりを示します。 省略できません。

結局、上のスクリプトは、画面に「はじめてのPerl」という文字列を出力し、 最後に改行を行います。

次に、複数の引数を与えてみましょう。まだメモ帳を閉じていないでしょうから、 現在表示されている nm001.pl ファイルを少し書き換えて、 以下のようなファイルを作り、 nm002.plという名前で保存して下さい。 入力ミスなどのせいで、後で修正する必要があるかもしれませんから、 メモ帳は閉じないようにしましょう。じゃまならば「最小化」しておきます。


 1: print "1+2=", 1+2, "\n";

引数は次の3つです:

2番目の引数の中の「1」と「2」はそれぞれ数値を表しています。 それらにはさまれた「+」は通常の加算(和)を表す「二項演算子」です。 つまりあわせて数値の3を表すわけです。最初の引数の中の 1+2は文字列の中ですから足されて3になるわけではありません。

作業:

このスクリプトを実行した結果が予想できますか?  予想通りの結果になるか、実際に試してみましょう。

上で「+」という演算子が出てきました。 演算子についてはあとで詳しく学びますが、ここで四則演算などだけを 簡単に表にしてまとめておきます。

演算子説明使用例とその値
+加算110+3  →  113
-減算110-3  →  107
*乗算110*3  →  330
/除算110/3  →  36.66666666666667
%除算の余り110%3  →  2
**べき乗110**3 →  1331000


作業:

上の表のような計算を確かめるようなスクリプトを作り、nm003.pl という名前で保存しましょう。 ただし、上で110となっているところを自分の学籍番号の下3桁で置き換えてください。 そのスクリプトと実行結果を自分のホームページに載せましょう。


ヒント

実行結果(プログラムの出力結果)をファイルに保存する便利な方法があります。 コマンドプロンプトにおける「リダイレクト」という機能を使うのです。 通常出力は画面に対して行われますが、その「向き」を変えて指定したファイルに 直接出力することができるのです。

I:\nyuumon2>jperl nm003.pl > nm003.txt

この例のように、実行するコマンドのあとに 「> 保存ファイル名」 を続けると、画面への出力がなくなり、もし指定したファイルがなければ 新しく作成されその中に出力が保存されます。もし、すでに指定したファイルが 存在するならば、その中身は消されて、今回の出力のみがそのファイルに保存されます。 保存するファイル名は自由に選んで構いませんが、大事なファイルを 上書きしてしまわないよう十分気をつけてください。

もし、すでに存在するファイルに追加して出力を 保存したいときは次のように 「>> 保存ファイル名」 とします。

I:\nyuumon2>jperl nm003.pl >> nm003.txt

出力が保存されたら、そのデータを直接 html ファイルに貼り付けることができます。 その部分のまわりを<pre></pre>ではさむと ほぼ見た通りに表示されます。
例:

110+3=113
110-3=107
110*3=330
110/3=36.6666666666667
110%3=2
110**3=1331000
あるいは、そのファイルへのリンクを作ってもよいでしょう。
例:出力ファイルnm003.txt

必要なファイルはすべてサーバに転送してください。 転送後、登録者リストから自分のページを閲覧してチェックしてください。