Object Oriented Perl DocumentWorkSpace

Ⅱ.Perl PROGAMMING[INSTAlL]

1.ActivePerl Install

 PerlはPractical Extracition and Report Languageの頭文字をとったプログラミング言語で当初はレポート作成言語として開発されており、文字の処理能力に優れた開発言語です。Perlはインタプリタ言語で1986年にLarry WAll氏によって生まれたUNIX文化に色濃く移す言語であり、UNIXはもちろんWindows、マッキントッシュなど様々なOS上で動かすことができます。 実用性と多様性を重視しており、CGI言語としての使用は勿論、ウェブ・アプリケーション、システム管理、テキスト処理などのプログラムを書くのに広く用いられています。 使用はperlはフリーソフトウェアでありArtistic LicenseおよびGPLのもとで配布されているため、自由に誰でもライセンスを選択して利用することが可能です。 Perlは次のサイトからインストールが可能です。 Active perlはコチラ

開発ツールにはEcclipse,Terapad,メモ帳,エディタなどさまざまなツールが存在します。気軽に環境づくりができることがPerl開発での魅力です。

2.Perl開発の進め方

ActivePerlをインストールした後は、まずは正常にインストールしているかどうか確認します。まずはコマンドブロンプトを立ち上げて、次のコマンドを打ち込んでください。

perl -v
 Perlが正常にインストールされていれば、perlのバージョン/著作権などの表示が返され実行環境が立ち上がります。インストールがされていない場合はerrorとなりますので再度インストールをして下さい。さて、次にperlプログラムを作ってみましょう。perlプログラムはメモ帳などで作成します。単純なプログラムであれば次のプログラムを書いて拡張子を.plで保存して下さい。仮にhelloworld.plと保存します。
print "Hello World!!";
保存した後は先ほどのコマンドブロンプト画面で先ほど保存したファイルを指定して実行してHello World!!と返ってくるはずです。perl開発の進め方はまずはここから。それでは始めましょう!!。

3.Perl入門 エスケープシーケンス/キャラクタ/代入

3-1.文字・数字の表示

(1)エスケープシーケンス \f 改ページをする \n 改行をする \r 復帰をする \t タブ \a ベルをならす (2)エスケープキャラクタ \\ \を表示 \" "を表示 \' 'を表示 \$ $を表示 \@ @を表示 (3)演算子 + 加算 - 減算 * 乗算 / 除算 % 剰余 ** べき乗 (4)算術関数の使用 abs 数値:数値の絶対値を返す int 式:式の整数部分を返す cos 式:式の値をラジアンとみなして余弦を返す sin 式:式の値をラジアンとみなして正弦を返す log 式:自然対数(e)を底とする式の値の対数を返す sqrt式:式の値の平方根を返す rand式:0から指定した式の値までのランダムな実数値を返す srand式:rand関数が生成する乱数を初期化する (5)コメント コメント(注釈)はスクリプトを見やすくするためのもので、スクリプトの実行には影響しません。コメントとなるのは、[#]からその行の最後まで。 (6)コンテキスト Perlではコンテキストという独自の概念があります。コンテキストとは日本語で文脈という意味です。 ・スカラーコンテキスト ・リストコンテキスト

2.変数

(1)変数 今まで文字や数字を扱ってきましたが、これらは文字リテラルや数字リテラルと呼ばれ 決まった値を持ちます。 変数は数字や文字列をいれる箱のことを指します。 perlでの命名規則は次のとおり ①先頭は$ ②二文字目は半角英字 ③三文字目移行は半角英数字またはアンダーバー (2)スカラー変数 変数には$で始まる変数以外にも [@で始まる配列変数]、[%で始まるハッシュ変数]があります。 ①変数は$で始まる ②配列変数は@で始まる ③ハッシュ関数は%で始まる (3)特殊変数

3.代入

変数は最初は0または空の状態である。この状態を未定義(undef)の状態と呼ぶ。
$x=100;
print $x;
print "\n";
$x="apple";
print $x;
(1)変数展開 変数名は"で囲んだ文字列の中でも指定することができる。
$city="Tokyo";
print "$city is a big city.";
$city="Tokyo";
print "{$city}Tower city.";
(2)シングルクォート文字列 文字列にはダブルクォート(")で囲む文字列の他に、シングルクォート(')で囲む文字列がある。 シングルクォート文字列の場合には、変数展開やエスケープシーケンスの認識は行われず、 指定した文字列がそのまま表示されます。 (3)変数の内容を加減乗除する 演算子 例 意味 += $a +=5; $aに5を足す(加算) -= $a -=5; $aに5を引く(減算) *= /= **= %= $a +=5; (4)インクリメントとデクリメント 変数に1を加えたり、1を引いたりする操作はカウンタ操作などでよく使われます。 このような場合にはインクリメント演算子やデクリメント演算子を使うとベント $a++ $a-- (5)キーボードから変数に値を代入 print "キーボードからデータを入力してください:"; $a=; chomp($a); print "キーボードから入力した値は、$aです"

4.二つのケースにわかれるif文

通常perlのスクリプトは上の命令から下の命令に向かって順に実行されていきますが、条件によって、実行する命令を変えたいときには、if文を使用します。 if($a==0){ $a+=10; $b+=5; }else{ $a-=5; $b-=5; } (2)比較演算子と真偽 条件文の中では==以外にも次のような比較演算子を使うことができます。 == 等しい !=等しくない > より大きい >= より大きいか等しい < より小さい <= より小さいか等しい (3)3つ以上のケースにわかれるif 先に二つのケースにわかれるif命令をしめしましたが、3つ以上のケースにわかれる場合にはelseifを使用します。 (4)論理演算子 同時に二つ以上の条件を判断したい場合がある。このような場合には論理演算子を使用します。 <論理演算子> or:論理和:X or y ||:同上:x||y and:論理積:x and y &&:同上:X && y not:論理否定:not y !:同上:!x (5)文字列の比較 いままで数字の大小を比較してきましたが、文字列の大小の比較は次のような演算子を使用します。 <比較演算子> eq :等しい   $a eq "x" ne :等しくない $a ne "x" gt :より大きい $a gt "x" ge :より大きいか等しい $a ge "x" lt :より小さい $a lt "x" le :より小さいか等しい $a le "x" (6)unless ifと似ていますが、条件の判定が逆になる制御文にunlessがある。条件が偽のときに、続くブロックが実行され、条件nが真のときにelseブロックが実行される。 (7)論理演算子を使った条件 論理演算しは条件文の中で使った場合にはブール値(真または偽)を返しますが、祖霊あ外ではオペランドの値を返します。 式1 and(&&) 式2 式1が偽なら式1、そうでなければ式2 式1 or(||) 式2 式1が真なら式1、そうでなければ式2

5.繰り返し処理

(1)While文 ある条件を満たす間、特定のブロックを繰り返し実行するという場合はwhile文を使う while(条件式){ 命令1; 命令2; }
$n=1;
$s=0;
while($n<=1000){
print "$n\n";
print "$s\n";
$n += 2;
$s += 2;
++$n;
}
print "sの値は{$s}です";
(2)until文 untilはwhileの反対であり指定した条件が偽の間、ブロックを繰り返し実行する。 (3)forによる繰り返し for (初期値;条件式;更新式){ 命令1; 命令2; } (4)繰返し処理のラベル ①ラベル ループ文にはラベルを付けることができる。 ラベル:ループ文 ②last lastはその場でラベルの付いたループを終了し、次の処理に移ります。ラベルを省略したときには、一番内側のループを終了します。 loop1:while(条件式1){ 命令1 if(条件式2){ 命令2 last loop1; } 命令3 } 命令4 ③redo redoはラベルの付いたループを再び実行させるときに使う。ラベルを省略したときには一番内側のループを再度実行する。 loop1:while(条件式1){ 命令1 if(条件式2){ 命令2 redp loop2; } 命令3 } 命令4 ④Next nextはnext文以降の部分をスキップして、ラベルの付いたループを実行させるときに使います。 ラベルを省略したときには、一番内側のループに戻ります。

6.配列を利用する

(1)配列とは スカラー変数は、データを入れる箱ですが、この箱には一つのデータしかいれることができません。一方配列変数は 複数のデータをいれることができる大きな箱といえる。 配列変数は@scoreのように先頭に@をつけて表します。二文字目は英字、3文字移行は英数字またはアンダーバーとなる。 これはスカラー変数と同じ命名規則である。 @score=(60,80,70,35,25,55); (2)配列の全要素の表示 print文で配列名を指定すれば、配列の全要素を表示することができる。 print @配列変数名 この場合printの引数区切り文字を指定する特殊変数「$,」で指定することができる。 その他配列変数名で囲めば区切り文字スペース1文字で変数展開される。 (3)配列を使った繰り返し(foreach) 配列要素を順に取り出して、繰り返し操作をするときに使うと便利なのがforeach文です。 foreach スカラ変数(配列){ ブロック }
#合計点を求める
$sum=0;
@score=(58,45,48,66,32,77);
foreach $each(@score){
$sum += $each;
}
print "合計=$sum";
foreach文でスカラー変数を省略することができる。このときには、特殊変数「$_」に配列の各要素が代入される。この場合次のように書き換えることが可能。
#合計点を求める
$sum=0;
@score=(58,45,48,66,32,77);
foreach (@score){
$sum += $_;
}
print "合計=$sum";
(4)配列の演算 配列同士を代入することもできる。 ①配列同士の代入 ②リスト中に配列を求める @score=(65,54,87); @score2=(score,50,60); ③配列にスカラーを代入 @data=10; ④スカラー変数に配列を代入する @a=(10,20,30); $x=@a; print $x; (5)配列を扱う関数 スカラー変数に配列を代入すると、配列の要素数がスカラー変数に代入されますが、次のようにscalar関数を使って、要素数をえることもできます。 (6)配列の添え字の最大数($#) 配列の添え字の最大数は特殊変数「$#」を使って調べることができる。 (7)配列の要素の削除 配列の先頭要素を削除するには、shift関数を、末尾要素を削除することはpop関数を使う。 shift(@配列) 戦闘要素の削除 pop(@配列) 末尾要素の削除
@a=(10,20,30);
print scalar(@a);
print "配列要素削除のプログラム"; $\="\n"; @x=(10,50,55,53,97); print "x=(@x)"; print "shift 先頭要素の削除を行うと"; print "削除した要素:",shift(@x); print "x=(@ print "pop 削除した要素の削除を行うと"; print "削除した要素:",pop(@x); print "x=(@x)"; (8)配列の全要素の削除(undef) 配列の全要素を削除するにはundefを使います。 undef @x; (9)配列の任意の位置からの要素の削除(splice) 配列の任意の位置から要素を削除するにはsplice関数を使う。 splice(@配列,位置,要素数) 配列@xの2番目の位置から要素を二つ削除している。 @=(10,7,7,5,3); splice(@x,2,2); splice(@配列,位置,要素数) (10)配列の要素の追加(unshift,push) 配列の先頭に要素を追加するにはunshiftを配列の末尾に要素を追加するにはpushを使います。 unshift(@配列,追加リスト)配列の先頭に要素を追加する push(@配列,追加リスト)配列の末尾に要素を追加する (11)配列の並び変え(reverse,sort) 配列を逆順に並び変えるにはreverse関数を使います。 reverse @配列 配列を昇順、または降順に並び替えるにはsort関数を使います。 sort @配列 sort @配列 配列を文字コードの昇順に並び変える sort{$b cmp $a} @配列 配列を文字コードの降順に並び替える sort{$a <=> $b} a配列 配列を数値の昇順に並び替える sort{$b <=> $a} a配列 配列を数値の降順に並び替える

7.連想配列

ハッシュとは以前のバージョンでは連想配列と呼ばれていたもので、一種の配列と考えることができます。 配列では、要素の値へのアクセスは要素の番号(添え字)で行いましたが、ハッシュでは要素の値は文字列のキーと対応づけられており、要素の値へのアクセスは対応づけられたキーで行います。 ハッシュの変数名には%scoreのように、先頭に%をつけます。それ以外の命名規則はスカラー変数や配列変数と同じで、二文字目は英字、三文字以降は英数字またはアンダーバーとなります。 %score=("佐藤",85,"山田",55,"斉藤",80); %score=("佐藤"=>85,"山田"=>55,"斉藤"=>80); (1)ハッシュの要素 ハッシュの要素を取り出すにはそのキーを指定します。print $score{"} $score{"佐藤"} または $score{佐藤} %score=(佐藤=>85,山田=>68,高橋=>75); print $score{"佐藤"}; (2)ハッシュの要素の値を変える ハッシュの要素の値を変えるには次のように指定する。 $ハッシュ変数{キー}=値 $score{"山田"}=93; (3)ハッシュの要素を削除 ハッシュの要素(キーと値の組)を削除するには、delete関数を使います。 delete $ハッシュ{キー} (4)ハッシュの全要素を削除する(undef) %score=(); undef %score; (5)ハッシュのキーの存在を確認する(exists) ハッシュにキーが存在するかどうかは、exists関数で調べることができます。 exists($ハッシュ{キー}) (6)ハッシュのキーや値を取り出す。 ハッシュ変数のキーだけを取り出すにはkeys関数を使います。 keys ハッシュ変数
%score=("佐藤"=>80,"山田"=>50,高橋=>90);
@key=keys %score;
print "keys=@keys";
(7)ハッシュの値を取り出す(values) ハッシュ変数の値だけを取り出すにはvalue関数を使います。 values ハッシュ関数
%score=("佐藤"=>80,"山田"=>50,"高橋"=>88);
@value=values %score;
print "values=@values";
(8)ハッシュのキーと値の組を返す ハッシュ変数のキーと値の組を返すにはeach関数を使います。 each ハッシュ変数
%score=("佐藤"=>80,"山田"=>50,"高橋"=>88);
while(($key,$value)=each(%score)){
print "$key=$value\n;
}
}