Perl初歩の初歩

プログラミング言語Perlの初心者のためのわかりやすい解説ブログ(を目指しています)

目次

2099-12-31 23:59:59 | 目次・はじめに

現在、地道に追加中です。長い目で見てね。

-------------------- Perl初歩の初歩 目次 --------------------

はじめに
 簡単なプログラム
 Perlを自分のパソコンにインストールしてみよう
 プログラムはテキストエディタに書く
 プログラム実行までの流れ

ルールを覚えよう
 データを運ぶ入れ物が必要だ …変数の話
 数字や文字などを1つだけ入れる器…スカラー変数
 データを並べて入れておく箱…配列の話
 呼べば応える名前付き配列…連想配列の話
 です、ますをしっかりする…文法の話
 わかれ道を作ってこそ…条件の話
 リサイクルの心がけ…サブルーチンの話

命令を覚えよう
 print 人間へのメッセージ
 foreach コツコツとしらみつぶしに
 while 終わるまで何度でも
 if / elsif / else もしも空を飛べたなら
 open 歴史を残さなければ
 flock 入浴中の家族風呂

テクニックを身につけよう
 自分のための備忘録…コメントの話
 小数の四捨五入と丸め誤差の話
 


プログラム実行までの流れ

2014-06-25 12:08:50 | 目次・はじめに

ここでは実際に自分で作ったプログラムを実行するまでの流れを説明します。

1. Perlの文法にのっとって、テキストエディタでプログラムを作ります。
2. コマンドプロンプトを開きます。
3. 「perl」+半角スペース+ファイル名 と入力してEnterキーを押します。
4. プログラムに問題がなければ、実行され(結果を表示して)終了します。

 →テキストエディタについてはこちら
 →Perlのインストール方法、コマンドプロンプトについてはこちら

 

メモ: これを読んでいる人の多くは、コマンドプロンプトじゃなくて、ブラウザで表示したいんだけど、と思っているかもしれません。Perlの実行結果をブラウザに表示させるには、Perlとは別にサーバーソフトのインストールと設定が必要になります。サーバーソフトとして代表的なのはApache(アパッチ)という無料のソフトで、筆者も自分のパソコンにインストールして使っています。ただ、ここはPerlの初心者向けのブログですので、Apacheのインストール方法は説明しません。必要な方は、Google等で検索してみてください。


if / elsif / else もしも空を飛べたなら

2009-06-04 22:09:49 | 目次・はじめに

if は、「もし~だったら、…をする」というように、ある条件にあてはまったときにだけ実行するためのものです。

if ($hour < 12) { print '午前です'; }

基本形は、if ( 条件 ) { 条件があてはまったときの命令 } となります。
上の例では、$hour が 12未満だったときに、「午前です」と表示されます。

このとき、空白を詰めて書いたり、改行を入れて書いても構いません。

if($hour<12){print'午前です'}

if ($hour < 12) {
  print '午前中です';
}

できるだけ見やすく書くといいでしょう。

午前と表示するなら、ついでに午後も表示するようにしましょう。

if ($hour < 12) {
  print '午前です';
} else {
  print '午後です';
}

else は、必ず if とセットで使います。
if の条件にあてはまらなかったときに行うことを else の後の { } の間に書きます。
この場合は、$hour が 12未満のときには「午前です」、それ以外のときは「午後です」と表示されます。

ただ、上のプログラムには欠陥があるのがわかるでしょうか?

もし、$hour が -4 という数値だったらどうでしょうか?
あるいは、$hour が 125 とかいう大きな数値だったらどうでしょうか?

$hour が -4 のときは、12未満ですので「午前です」と、
$hour が 125 のときは、12未満ではないので「午後です」と表示されてしまいます。

そこで改良版はこうなります。

if ($hour >= 0 && $hour < 12) {
  print '午前です';
} elsif ($hour >= 12 && $hour < 24) {
  print '午後です';
} else {
  print '正しい時刻ではありません';
}

条件が複雑になり、途中に elsif が入りました。

elsif も if とセットで使い、if の条件にあてはまらなかった場合に、別の条件を用意して、それがあてはまれば直後の { } の中を実行します。

上の場合は、$hour が 0 以上 12 未満のときに、「午前です」と表示して、
$hour が 12 以上 24 未満のときに、「午後です」と表示して、
さらに、if の条件も elsif の条件にもあてはまらなかった場合に「正しい時刻ではありません」と表示します。

ここまでは大丈夫でしょうか? さらに複雑になります。

もし、$hour が 数値ではなくて文字だったらどうなるでしょうか?
仮に $hour = 'コロッケ' だったとすると、$hour >= 0 があてはまってしまいます。
「コロッケ」を無理やり数字とみなした場合、0 となるからです。

そこで、$hour が数字じゃなかった場合に備えて、さらに改良します。

$hour = 3;

if ($hour eq '' || $hour == 0 && $hour ne '0') {
  print '数字を入力してください';
} else {
  if ($hour >= 0 && $hour < 12) {
    print '午前です';
  } elsif ($hour >= 12 && $hour < 24) {
    print '午後です';
  } else {
    print '正しい時刻ではありません';
  }
}

大きく if と else で囲んで、その else の中に、さきほどまでの if が入っています。
このように、if や elsif else の中にさらに if elsif else を入れることもできます。
上の例では、まず $hour に何も入っていないか、$hour が 0 だけど $hour が '0' ではない時に「数字を入力してください」と表示され、それ以外のときに午前か午後かを調べています。

$hour eq '' は、$hour という変数に何も入っていなければ…、という条件です。
$hour == 0 は、$hour が文字のときか 0 のときにあてはまりますので、さらに、$hour ne '0' で 0 ではないとき、という条件を追加して、この2つで$hour が 文字であるとき、という条件になっています。

条件の中の || と && では && を優先しますので、$hour が空欄か、あるいは、文字のとき、という条件になります。

$hour = 3; の部分を $hour = 15; や $hour = -5; や $hour = 'コロッケ'; などいろいろ変えて、試してみましょう。


プログラムはテキストエディタに書く

2009-05-03 14:23:23 | 目次・はじめに

 Perlに限らず多くのプログラムは、アルファベットを中心とした文字で書きます。
 パソコンで文字を打ってそれを保存する方法は、Windowsの場合は標準で「メモ帳」や「ワードパッド」などが付属していますし(スタート→プログラム→アクセサリ)、仕事などで書類を作る時には Microsoft Office の Word(ワード)を使う人もいるでしょう。
 とはいえ、プログラムを書くときには、文字を太くしたり色をつけたり、あるいは、罫線を書いたり画像を挿入したりする機能はまったくの不必要ですから、Word や ワードパッドでは無駄な機能が多すぎて使いずらいですし、メモ帳では逆にシンプルすぎて使い物になりません。

 そこでプログラマーは、プログラム作成に向いているテキストエディタを使うことになります。
 Windows用のソフトとして以下のようなものがあります。

EmEditor(有料)
http://jp.emeditor.com/

秀丸エディタ(有料)
http://hide.maruo.co.jp/software/hidemaru.html

TeraPad(無料)
http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html

 このほかにもさまざまなテキストエディタがありますので、自分の好みのものに出会えるといいですね。
 ちなみに、筆者は秀丸エディタを使っています。


Perlを自分のパソコンにインストールしてみよう

2009-05-01 17:40:51 | 目次・はじめに

 これからPerlを覚えようとしている人の多くは、WindowsやMacのパソコンを使っていると思います。今のままではPerlのコードを書いても、実行することができませんので、あなたのお使いのパソコンにPerlをインストールする必要があります。
 Perlはありがたいことに無料のソフトですから、気軽にインストールしてプログラミング体験してみてください。

 ここでは、Windowsパソコンにインストールして実行する方法を書きます。
 というのは、筆者がWindowsパソコンしか使ったことがないからです。

 Windows用のPerlは ActivePerl (アクティブパール) という名前がついています。
 http://www.activestate.com/activeperl/

  1. 「DOWNLOAD NOW」をクリック
  2. ファイルのダウンロード:「実行」をクリック
  3. セットアップ:「Next」をクリック
  4. 規約への合意:「I accept the terms in the License Agreement」を選択して「Next」をクリック
  5. インストール先:「Next」をクリック
  6. オプション:「Next」をクリック
  7. インストール:「Install」をクリック
  8. インストールの完了: Display the release notes のチェックを外して「Finish」をクリック

 以上でインストールは終了です。

 ちゃんとインストールできているかどうかを確認するには、
「スタート」→「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」を起動して、「perl -v」と打ってEnterキーを押して、バージョン情報が表示されれば成功です。

 ためしに、「perl -e "print 1+2"」と打ってみましょう。
 3 と表示されましたか? Perlが 1+2 を計算して表示してくれました。
  → 1+2 の部分をいろいろ変えて、Perlに計算させてみよう。

 今後のために、Perl専用のフォルダを1個作っておきましょう。
  →フォルダ名は漢字やひらがなやカタカナはやめて、アルファベットにしておいたほうがいいでしょう。

 Perlが実行しやすいように、デスクトップにコマンドプロンプトのショートカットを作っておきましょう。
 「スタート」→「すべてのプログラム」→「アクセサリ」で コマンドプロンプト を右クリックして、「送る」→「デスクトップ」でショートカットを作成後、デスクトップにできたコマンドプロンプトのアイコンを右クリックしてプロパティを表示し、作業フォルダの欄を、さっき作ったフォルダへのパスをいれておきます。
  例) C:\Users\HANAKO\perl\

 これで、Perlを使うときには、デスクトップにできたアイコンをダブルクリックして、コマンドプロンプトを表示させます。そしてその画面で、「perl」+半角スペース+ファイル名 と入力しEnterキーを押すことで、自分で作ったperlのプログラムを実行できるようになります。

 


簡単なプログラム

2009-04-30 17:02:11 | 目次・はじめに

Perlのプログラムをさっそく見てみましょう。

$a = 1;
$b = 2;
$c = $a + $b;
print $c;

$a が 1 で、$b が 2 で、$a と $b を足したものが $c であって、$cを表示しなさい、というプログラムです。

このプログラムを実行すると、もちろん「3」と表示されます。こんな暗算でもできるようなことを、コンピュータにやらせても何もおもしろいことはありませんので、次を見てみましょう。

$a = 1;
$b = 1000;
foreach my $d ($a .. $b) {
  $c = $c + $d;
}
print $c;

$a から $b までを全部足すといくつになるかを求めるプログラムです。この場合は 1+2+3+4+…+999+1000 を計算するわけです。

仮に上の $b を 1000000 という大きな数字にしたとしても、最新のコンピュータなら一瞬で答えをはじき出してくれます。

Perlに限らず、計算するというのはプログラムの基本ですし、コンピュータの最も得意とするところです。今後、プログラミングを覚えたら、どんどんコンピュータに命令してしまいましょう。


はじめに

2009-04-30 16:13:26 | 目次・はじめに

 むずかしい言葉で書かれている解説本を見て、いきなりやる気がなくなることがある。なんでこんなにわけのわからない説明をしているのだろう、もっとわかりやすい言葉で書いてくれればいいのに、っていつも思ったりしている。

 多くの場合、プログラミングをしているプロフェッショナルな方々は、論理的な思考の持ち主で、正しくものごとを伝えようと思っている傾向にあると思う。完璧さを求めるあまりに、ムダな表現やあいまいな言い回しをするのを嫌い、過不足なく間違いのない言葉選びをするので、無味乾燥の味気ない文章、リズムのない眠くなるような文章となってしまい、読もうとする人のやる気をそいでしまうのではないだろうか。

 それなら、できるだけむずかしい表現はしないように、わかりやすい解説をしたものを自分で作ろうと思い立ちました。

 ここにこれから書こうとすることは、正確さを多少犠牲にして、わかりやすさを重視していくつもりです。

 たとえば、「人は外へ出る時に靴をはく」と言ったとき、必ずしも正しいとは言えないでしょう。はだしで生活している人もいますし、下駄や草履は靴なのかという問題もあるでしょう。しかし、多くの日本人の場合、外へ出る時には靴をはくというのはおおむね正しいと言えるはずです。

 また、自分が学習してきた中で、「具体例」ほど役に立ったものはありません。

 プログラミングを学ぶ上で、どんなに詳しい説明であっても、それだけではさっぱり理解はできないものです。ふんだんな具体例・サンプルコードがあってこそ、より深い理解が得られるものです。ここでは、そんな具体的なコードを多く掲載していきたいと思っています。

  → 目次へ進む