この章ではPerlの基礎について説明します。 プログラムは基本的には先頭から順番に実行されていくというのが基本です。 プログラムを書く前にTeraPadであれば表示メニューの中の編集モードをPerlにしてください。
書き終わりましたらファイルを保存しますので、TeraPadの「ファイル」の中のをクリックします。
クリックしますと以下のダイアログボックスが開きますので文字コードを「UTF-8N」を選択してOKを押してください。 OKを押しますと以下のダイアログボックスが開きますので、ファイル名に好きなファイル名を入力します。
この時、拡張子は必ずにしてください。
つまり、と書きます。
そして、ファイルを保存する場所はです。 保存しましたら、ブラウザのURLを入力する箇所に以下のように入力します。
ファイル名は自身で決めたファイル名を入力します。 実行するとブラウザにプログラムの内容を表示させることが出来ます。
表示する時に文字化けが起こるのならばブラウザのエンコードが他の文字コードになっていますので、これを変更します。
windows7の場合で説明しますと初めに画面の上で右クリックします。クリックしますとメニューが開きますのでその中のエンコードをに変更してください。
これで文字化けは直ります。
では先頭から解説します。 「c:/perl/bin/」の場所にプログラムを翻訳してくれるActivePerlがあることを示しています。
レンタルサーバを借りて、webページを動かすときにはレンタルサーバの業者により、ここの記述は違うので、Perlのパスを確認してください。
例えば以下のサーバー業者ではサイトのQ&Aに書いてあります。 ここはCGIヘッダーと呼ばれる部分でCGIプログラムを実行する場合、初めにCGIヘッダーを送る規則になっています。
「Content-type」の右側は送信されたデータがどのような内容のものなのかを示しています。
この例のようにテキスト形式(文字情報だけ)で出力するのであればを指定します。
HTML文書として出力したい場合、以下のようにを入力します。
つまり、CGIヘッダーはこれから送るのはテキスト形式ですよ。
もしくはHTML形式ですよと宣言する役割を持っています。
「text/html」の例は以下の通りです。 $cats, $number1 ,$number2など文字の先頭に$が付いた形式をスカラー変数もしくはただ単に変数と呼びます。
スカラーとはやなどのことを言いますが、そのスカラーというデータを入れている変数なので「スカラー変数」と呼ばれているわけです。
次に変数について説明します。
変数とは何かしらのデータを入れる箱みたいなものです。
バッグを例に取るとバックには財布やハンカチを入れて持ち運びますが、そのバックに当たるものが変数です。
そして、このバッグに入っている財布やハンカチがデータに該当します。
もしくは、変数とはフロッピーディスクみたいなもので、その中にデータを記憶させておくことが出来ます。 変数には名前を付けなくてはいけないのですが、この例でいいますとcats、number1 、number2が変数名です。
$と変数名が付いた形式で初めて変数になります。
この例では変数名にcats、number1 、number2と付けましたが、名前を付ければ何でもいいというのではなく、一定のルールがあります。
1つ目は$の次の1文字目は数字で始めることはできません。
例えば$3catsという名前は付けることはできません。
2つ目は$の次の1文字目は
「アンダースコア(_)」
「aからz」「AからZ」が使えます。
3つ目は$の次の次からは
「アンダースコア(_)」
「aからz」「AからZ」、
「数字」が使えます。
4つ目は同じ文字でも大文字と小文字は全く別の変数になります。
例えば$catsと$CATSは全く違う変数になります。
また、変数名には「入れるデータに関連した名前」にして誰が見てもわかりやすくしましょう。
猫に関連しているのなら$catsなどと付けます。
次に変数へのデータの入れ方について説明します。
例の「$cats=”三毛猫”;」に「=」と言う記号がありますが、これを代入演算子と言います。数学のイコールとは関係ありません。
代入演算子は右辺のデータを左辺に入れる役割があります。
例で説明しますと$catsと言う変数にと言うデータを入れるという意味です。
このデータを入れる行為を「代入」と言います。
注意してほしいことは同じ変数に他のデータを代入してしまうと後から代入したデータで上書きされますので注意してください。
例えば以下の例では「三毛猫」を「どら猫」で上書きしてしまいます。 次はシングルクォートとダブルクォートについて説明します。
「三毛猫」「犬」のような文字列を変数に代入するにはもしくはで文字列を囲まないといけません。
ダブルクォートもしくはシングルクォートで囲まれたものは文字でも数字でもすべて文字列になります。
例えばダブルクォートもしくはシングルクォートで文字列を囲まないでのように書きますとエラーになります。
のように数字を変数に代入する場合にはダブルクォートもしくはシングルクォートで数字を囲む必要はありません。
次に文の末尾のセミコロンについて説明します。 文の終わりにセミコロン「;」が付いていますが、これは日本語の文章の「。」と同じ意味で、文の終わりを意味します。
文の終わりにはセミコロンを必ず付けてください。 「print」という文字がありますが、これは文字列を出力する関数です。
関数とはエクセルを学習したことがある人はわかると思いますが、Perlの関数の仕組みはエクセルの関数の仕組みと意味は同じです。
例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Perlにもあらかじめ機能が決められている関数が有ります。
その数多くの関数の中の一つがprint関数ですが、この関数には「文字列を出力する機能」がPerlの内部機構により初めから決められています。print関数は以下のように括弧で囲んでもいいです。
つまり括弧があってもなくてもどちらでもいいです。 次に文字列の中に変数を入れるときの注意点について説明します。
のように文字列の中に変数が含まれている場合はダブルクォートで文字列を囲ってください。
ダブルクォートで囲うことによって、変数の中に入っている値を表示させることが出来ます。
これを変数展開と呼びます。
この例の場合は$catsの中に代入されている三毛猫と$number1に入っている2、そして$number2に入っている3が出力されます。
つまり、 を出力しますと
三毛猫を2匹飼っています
三毛猫を3匹飼っています
と出力します。
上の例のは改行を意味しています。
例えばを外しますと
のように改行しないで出力されます。
また、文字列が含まれていない、つまり変数だけののような文の場合には変数をダブルクォートで囲う必要はありませんが、以下のようにダブルクォートで囲っても問題ありません。 では次のように変数が含まれている文字列をシングルクォートで囲んだらどうなるでしょうか? 結果はという文がそのまま出力されます。シングルクォートは囲ったものをそのまま表示します。
つまり、$catsに代入されている三毛猫と言う文字と$number1に代入されている2と言う数字が変数展開されなくなるので注意が必要です。
ここで気を付けてほしいことを説明します。
例えば以下の例のようにに変えて出力させようと思っても結果はとなってしまいます。
原因は$number1hikiが変数として認識されてしまうからです。 これを正しく出力させるために書き換えますと以下のようになります。 解決方法は変数名をで囲んでください。
これで正しくと出力されます。
では今度はprint文を今までとは違う形で書く2つの方法について説明します。 今までは上の例のように文全体をダブルクォートで囲んでいましたが、これを別な方法で書き換えると以下のようになります。 この書き方はドット「.」で文字列と文字列を連結する方法です。 このドットは「文字列演算子」と言いまして、ドットの右辺と左辺の文字列を連結する働きがあります。
ここで少し疑問に思った人がいるかもしれませんが、ドットは文字列同士を連結する演算子なのに$number1には数字の2が入っています。そこでPerlは数字の2を文字列のに自動的に変換します。
これは文字列連結演算子を使う場合にはドットの右辺と左辺の値を文字列として扱うためです。 変数と文字列の間をカンマ「,」で区切る方法です。
この方法は変数と文字列の間だけではなくて、変数と変数の間をカンマで区切ることもできます。