1. Perlの基礎
初回の今日はPerlの基本的な文法から始めていきます。
■Perl 開始記述
-----------------------------------------------------------------
#!/usr/local/bin/perl
-----------------------------------------------------------------
この一行が先頭に必ず必要です。
これは、Perlを実行するプログラムのパスとなります。
サーバによってパスが変わることがありますが、たいがいのサーバは、上記のように
記述すればOKですが、これでエラーとなる場合は
#!/usr/bin/perl
と記述します。
■コメント
# 『#』以降、改行までがコメントとなります。
コメント部分はプログラムとして実行されません。
■変数タイプ
変数の種類として、以下のものがあります。
$a 単純変数
@a 配列変数
$#a 配列の最終添字
%a 連想配列、ハッシュ変数
■変数名の決まり
変数名は、英字(a〜z、A〜Z)またはアンダースコア(_)で始まり、英字、アンダースコア
または数字(0〜9)が続く単語が指定可能です。文字数の指定はありませんが、
大文字、小文字は区別して扱われます。
-----------------------------------------------------------------
$abc # 正
$a123 # 正
$_abc # 正
$123 # 誤 ( 数値で始まっている )
-----------------------------------------------------------------
■単純変数
変数は数値でも文字でも入ります。
-----------------------------------------------------------------
$a = 10; # 数値を代入
$b = "20"; # 文字列を代入
$c = $a + $b; # 数値と文字列を加算
print $c; # 表示→ ( 30 )
-----------------------------------------------------------------
文字列はダブルクォーテーション(")又はシングルクォーテーション(')で囲んで
表示します。
ダブルクォーテーションはその中に変数を書くと、値が表示されます。
シングルコーテーションの場合は、そのまま表示されます。
以下に簡単なサンプルを記述します。
-----------------------------------------------------------------
$a = 30;
print "$a"; # 変数の内容30が表示される
print '$a'; # $a と表示されてしまう
-----------------------------------------------------------------
■配列
配列とは、連続したデータを変数に格納する時に使用します。
-----------------------------------------------------------------
@week = ('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat');
print $week[1] ; # 要素への参照 "mon"が表示される
-----------------------------------------------------------------
配列の詳細については、別の機会に説明します。
■ハッシュ(連想配列)
ハッシュとは、配列変数の添字が文字列となったもので添字と対応して保持されます。
-----------------------------------------------------------------
# ハッシュの初期化
%week = ('sun', '始まり', 'wed', '中日', 'fri', '週末');
print $week{fri}; # 0番目からの要素への参照 "週末"が表示される
-----------------------------------------------------------------
ハッシュの詳細については、別の機会に説明します。
■演算子
+ 加算
- 減算
* 掛け算
/ 割り算
% 余り
++ インクリメント (+ 1)
-- デクリメント (- 1)
** べき乗
. 文字列結合
m// マッチ演算子
s/// 置換演算子
tr/// 変換演算子
インクリメントについて
++$i は、その行が実行される前に、$i に 1 プラスされます。
$i++ は、その行の実行後に、$i に 1 プラスされます。
デクリメント『--』は 1 マイナスになります。
マッチ演算子、置換演算子、変換演算子については、別の機会に詳しく説明しようと
思います。
■代入
変数に値を代入するには、以下の方法があります。
= 単純代入
+= 加算代入
-= 減算代入
*= 乗算代入
/= 除算代入
.= 文字列加算代入
$a = $a + $b; は、$a += $b; と同じ意味です。
■特殊文字 (エスケープシーケンス)
文字列を囲む『"』ダブルクォーテーションの中で、改行や \マークなどを記述
する場合は、『\』エスケープシーケンスというものを前に書いて表します。
\n 改行
\r キャリッジリータン(改行)
\t タブ
\\ 「\」マーク
\" 「"」ダブルクォーテーション
\, 「,」カンマ
\@ 「@」マーク
『'』シングルクォーテーションの場合は、
\' 「'」シングルクォーテーション
\\ 「\」マーク
がエスケープシーケンスとなり、それ以外はそのまま出力されます。
★今日のまとめサンプルプログラム
-----------------------------------------------------------------
#! /usr/local/bin/perl
print "Content-type:text/html\n\n";
print << "END_OF_HTML";
<HTML>
<BODY>
END_OF_HTML
# 変数
$a = 10; #整数
$b = '20'; #文字列
$c = $a + $b; #整数で計算される
$d = $a . $b; #文字列が連結される
print '$a = ' . $a . '<br>'; # シングルクォーテーションの場合は $a がそのまま表示される
print "\$b = $b<br>"; # ダブルクォーテーションの場合は $b は値が表示される
# $ という文字を表示したい場合は、 \$ とすると表示される
print "\$c = $c<br>"; # 30と表示される
print "\$d = $d<br>"; # 1020と表示される
# 配列
@week = ('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat');
print "$week[0]<br>";
print "$week[1]<br>";
print "$week[2]<br>";
print "$week[3]<br>";
print "$week[4]<br>";
print "$week[5]<br>";
print "$week[6]<br>";
# ハッシュ配列
%week = ('sun', '始まり', 'wed', '中日', 'fri', '週末');
print $week{sun} . '<br>';
print $week{wed} . '<br>';
print $week{fri} . '<br>';
print << "END_OF_HTML";
</BODY>
</HTML>
END_OF_HTML
exit;
-----------------------------------------------------------------
■解説
HTML内にプログラムの結果を出力しています。"Hello World"プログラムが動作する
環境であれば、上のサンプルも難なく動作すると思います。
HTMLの出力部分については、また別の機会に詳しく説明しようと思います。
結果のページには、print文で出力したものが羅列されているかと思います。
それぞれの結果が、なぜそのように出力されたかを確認してみてください。
★課題
1. 以下の2つの変数の加算、減算、掛け算、割り算、余りの結果をHTML中に出力
してください。
42
19
2. 以下の4つの文字列を配列に格納し、HTML中に文字列をつなげて出力してください。
'This'
' is '
'a test '
'program.'
|