ここでは自分なりにperlを勉強して、学んだことを書いていきます。(初歩の初歩ですが)
###概要
1.変数について
2.条件文
3.繰り返し文
4.ファイル処理
5.関数
#1.変数について
変数については、代入できるデータ型はスカラー値、配列、連想配列(ハッシュ)の3種類がある。
それぞれ変数を宣言するときに、変数名の頭に特定の記号をつけます。スカラー値の場合は$、配列の場合は@、ハッシュの場合は%をつける。
以下例文
my $num = 5; #スカラー値
my @nums = (1,2,3,4,5); #配列
my @colors = qw(red blue green); #文字列のとき
my %number = ("red"=>1,"blue"=>2,"green"=>3); #ハッシュ
print $num;
print @nums[2];
print $number{"blue"};
これを実行すると
532
と結果が返ってくる。
ここで注意すべき点は、配列の中身がすべて文字列ならqw()と書けること、ハッシュの値自体はスカラー値なので、出力などの際にはスカラー型にする必要があることである。
#2.条件文
基本はcとかjavaとかと同じである。
しかし、文字列を比較する場合に関係演算子というものを使用する。
以下例文
my $name = "Joe";
if($name eq "Joe"){
print "OK!";
}
ここではeqという関係演算子を使っている。
eq(equal)ということで等しいなら真を返す。
#3.繰り返し文
while文はcやjavaと同じである。ここではfor文について説明する。
perlにはforeachという繰り返し文がある。
以下例文
my @fruits = qw(orange banana grape melon);
foreach my $fruit (@fruits){
print "$fruit\n";
}
これは()内の配列の要素を先頭からひとつずつ、()の前の変数に代入して{}内のプログラムを実行している。これを配列内のすべての要素に対して実行する。
また、これをfor文で書き換えると
my @fruits = qw(orange banana grape melon);
for(@fruits){
print "$_ \n";
}
とできる。$_に配列の要素が入る形になっていて、これを特殊変数という。
#4.ファイル処理
ファイル処理にはopen()を使う。
以下例文
open(my $in,"<","test.dat") or die("not open"); #読み込み
open(my $out,">","test.out") or die("not open");#書き込み
#一行づつ読み込み
while(<$in>){
print $out $_;
}
close($in);
close($out);
これは、test.datファイルの内容をtest.outファイルに書き込む動作である。
open()関数の第一引数にはファイルハンドルを設定します。第二引数にはそのファイルの処理を設定します。"<"が読み込み、">"が書き込みを意味しています。第三引数には使用するファイルを持ってきます。
ファイルを読み込むときは、読み込むときはファイルハンドルに<>をつけます。
最後にclose()関数でファイル処理を終了します。
#5.関数
何か一連の動作を何度も使用したいときには、関数を作っておくと便利です。関数を作成する際には sub を使用します。
sub max{
my $max = $_[0];
if($_[1] > $max){
$max = $_[1];
}
return $max;
}
print max(10,50) . "\n";
これは二つのスカラーを変数として大きい値の方を返す関数です。ここで注目すべき点は*$_[n]*という部分です。nには0,1,2,3....がはいります。これは使用する引数の番号となっており一番左端の引数から$_[0],$_[1],$_[2]...と対応しています。
この場合ですと、10と50を比較し、値の大きい50を返します。