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開発の進め方はまずはここから。それでは始めましょう!!。
$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です"
$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文以降の部分をスキップして、ラベルの付いたループを実行させるときに使います。 ラベルを省略したときには、一番内側のループに戻ります。
#合計点を求める $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配列 配列を数値の降順に並び替える
%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; } }