0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

perl 勉強ノート

Last updated at Posted at 2016-06-07

ここでは自分なりにperlを勉強して、学んだことを書いていきます。(初歩の初歩ですが)
###概要
1.変数について
2.条件文
3.繰り返し文
4.ファイル処理
5.関数

#1.変数について
変数については、代入できるデータ型はスカラー値、配列、連想配列(ハッシュ)の3種類がある。
それぞれ変数を宣言するときに、変数名の頭に特定の記号をつけます。スカラー値の場合は$、配列の場合は@、ハッシュの場合は%をつける。
以下例文

sample.pl
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とかと同じである。
しかし、文字列を比較する場合に関係演算子というものを使用する。
以下例文

sample.pl
my $name = "Joe";

if($name eq "Joe"){
    print "OK!";
}

ここではeqという関係演算子を使っている。
eq(equal)ということで等しいなら真を返す。
#3.繰り返し文
while文はcやjavaと同じである。ここではfor文について説明する。
perlにはforeachという繰り返し文がある。
以下例文

sample.pl
my @fruits = qw(orange banana grape melon);

foreach my $fruit (@fruits){
     print "$fruit\n";
}

これは()内の配列の要素を先頭からひとつずつ、()の前の変数に代入して{}内のプログラムを実行している。これを配列内のすべての要素に対して実行する。

また、これをfor文で書き換えると

sample.pl
my @fruits = qw(orange banana grape melon);

for(@fruits){
     print "$_ \n";
}

とできる。$_に配列の要素が入る形になっていて、これを特殊変数という。
#4.ファイル処理
ファイル処理にはopen()を使う。
以下例文

sample.pl
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.pl
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を返します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?