下記フォームに必要事項を入力後、確認ボタンを押してください。
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開発での魅力です。
ActivePerlをインストールした後は、まずは正常にインストールしているかどうか確認します。まずはコマンドブロンプトを立ち上げて、次のコマンドを打ち込んでください。
perl -vPerlが正常にインストールされていれば、perlのバージョン/著作権などの表示が返され実行環境が立ち上がります。インストールがされていない場合はerrorとなりますので再度インストールをして下さい。さて、次にperlプログラムを作ってみましょう。perlプログラムはメモ帳などで作成します。単純なプログラムであれば次のプログラムを書いて拡張子を.plで保存して下さい。仮にhelloworld.plと保存します。
print "Hello World!!";保存した後は先ほどのコマンドブロンプト画面で先ほど保存したファイルを指定して実行してHello World!!と返ってくるはずです。perl開発の進め方はまずはここからです。それでは始めましょう。
(1)エスケープシーケンス ● \f 改ページをする ● \n 改行をする ● \r 復帰をする ● \t タブ ● \a ベルをならす (2)エスケープキャラクタ ● \\ \を表示 ● \" "を表示 ● \' 'を表示 ● \$ $を表示 ● \@ @を表示 (3)演算子 ● + 加算 ● − 減算 ● * 乗算 ● / 除算 ● % 剰余 ● ** べき乗 (4)算術関数の使用 ● abs 数値:数値の絶対値を返す ● int 式:式の整数部分を返す ● cos 式:式の値をラジアンとみなして余弦を返す ● sin 式:式の値をラジアンとみなして正弦を返す ● log 式:自然対数(e)を底とする式の値の対数を返す ● sqrt式:式の値の平方根を返す ● rand式:0から指定した式の値までのランダムな実数値を返す ● srand式:rand関数が生成する乱数を初期化する (5)コメント コメント(注釈)はスクリプトを見やすくするためのもので、スクリプトの実行には影響しません。コメントとなるのは、[#]からその行の最後までコメントとみなされます。 (6)コンテキスト Perlではコンテキストという独自の概念があります。コンテキストとは日本語で文脈という意味です。 ● スカラーコンテキスト ● リストコンテキスト
(1)変数 今まで文字や数字を扱ってきましたが、これらは文字リテラルや数字リテラルと呼ばれ決まった値を持ちます。変数は数字や文字列をいれる箱のことを指します。 [Perlでの命名規則は次のとおり] @ 先頭は$ A 二文字目は半角英字 B 三文字目移行は半角英数字またはアンダーバー (2)スカラー変数 変数には$で始まる変数以外にも [@で始まる配列変数]、[%で始まるハッシュ変数]があります。 @ 変数は$で始まる A 配列変数は@で始まる B ハッシュ関数は%で始まる (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を引く(減算) ● *= ● /= ● **= ● %= (4)インクリメントとデクリメント 変数に1を加えたり、1を引いたりする操作はカウンタ操作などでよく使われます。このような場合にはインクリメント演算子やデクリメント演算子を使うと便利です。 ● $a++ ● $a-- (5)キーボードから変数に値を代入
print "キーボードからデータを入力してください:"; $a=; chomp($a); print "キーボードから入力した値は、$aです"
(1)条件によって命令を変更する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があります。条件が偽のときに続くブロックが実行されて条件が真のときにelseブロックが実行されます。 (7)論理演算子を使った条件 論理演算子は条件文の中で使った場合にはブール値(真または偽)を返しますが、それ以外ではオペランドの値を返します。
式1 and(&&) 式2 式1が偽なら式1、そうでなければ式2 式1 or(||) 式2 式1が真なら式1、そうでなければ式2
(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は指定した条件式が真の場合は繰り返し実行され更新式へと移ります。条件式に満たなくなれば、プログラムはブロックを抜けます。
for (初期値;条件式;更新式){ 命令1; 命令2; }(4)繰返し処理のラベル @ ラベル ループ文にはラベルを付けることができます。 ラベル:ループ文 A last lastはその場でラベルの付いたループを終了して次の処理に移ります。ラベルを省略したときには一番内側のループを終了します。
loop1:while(条件式1){ 命令1 if(条件式2){ 命令2 last loop1; } 命令3 } 命令4B redo redoはラベルの付いたループを再び実行させるときに使います。ラベルを省略したときには一番内側のループを再度実行します。
loop1:while(条件式1){ 命令1 if(条件式2){ 命令2 redp loop2; } 命令3 } 命令4C Next nextはnext文以降の部分をスキップして、ラベルの付いたループを実行させるときに使います。ラベルを省略したときには、一番内側のループに戻ります。
(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)配列の演算 配列同士を代入することができます。 @ 配列同士の代入 A リスト中に配列を求める @score=(65,54,87); @score2=(score,50,60); B 配列にスカラーを代入 @data=10; C スカラー変数に配列を代入する @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配列 配列を数値の降順に並び替える
ハッシュとは以前のバージョンでは連想配列と呼ばれていたもので、一種の配列と考えることができます。配列では、要素の値へのアクセスは要素の番号(添え字)で行いましたが、ハッシュでは要素の値は文字列のキーと対応づけられており、要素の値へのアクセスは対応づけられたキーで行います。ハッシュの変数名には%scoreのように、先頭に%をつけます。それ以外の命名規則はスカラー変数や配列変数と同じで、二文字目は英字、三文字以降は英数字またはアンダーバーとなります。 ● %score=("佐藤",85,"山田",55,"斉藤",80); ● %score=("佐藤"=>85,"山田"=>55,"斉藤"=>80); (1)ハッシュの要素 ハッシュの要素を取り出すにはそのキーを指定します。
%score=(佐藤=>85,山田=>68,高橋=>75); print $score{"佐藤"}; 返される値:85(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; }