Posted at

Perlを初めて書いてみよう!


Perlやってもらうから

ん?perl??(すっとぼけ

perlなんて触ったことも無いけれど

まぁifやforさえ出来れば、プログラミングなんてちょちょいのちょいやから!!


甘いんだよォ!!!

お前はperlを舐めてるッ!

perlのクセの強さに苦しむが良いッ!!


perlの宣言

まずはperlを書き始める前にperlの宣言をしなくてはいけない。

perlのファイルの1行目にperlのパスを記述し

useでモジュールの読み込みをする。

#!/usr/local/bin/perl

use strict;
use warnings;

こんな感じで書いていく。

ちなみにuse strict;は変数の宣言をしないと怒られるようになるモジュール

use warnings;はエラーを吐いてくれるようになるモジュール。


変数を宣言する。


変数の種類

perlには変数に種類がある。

$:スカラー変数(scalar variable)

@:アレイ変数(array variable)

%:ハッシュ変数(hash variable)

の三種あり、それぞれプレフィックスというものを頭につけなければならない。


$:スカラー変数

いわゆる一般的な変数。

1つの値しか代入することが出来ない。

$suuzi = 123;

$mozi = "よんごーろく";

print $suuzi; #123
print $mozi; #よんごーろく


@:アレイ変数。

いわゆる配列の変数。

@sosuu = (1,3,5,7,11,13,17);

@kudamono = ("りんご","みかん","れもん");

push(@sosuu,19); #最後に追加
unshift(@kudamono,("めろん","すいか")); #先頭に追加

shift(@sosuu); #先頭を削除
pop(@kudamono); #最後を削除

print @sosuu[3] #5
print @kudamono[1] #すいか


%:ハッシュ変数

いわゆる連想配列の変数。

連想配列を宣言する時のプレフィックスは%

連想配列の中の1つを参照する時のプレフィックスは$であることに注意!

%risuto = ("やまだ"=>15,"たなか"=>22,"すずき"=>29);

$risuto{"やまもと"} = 36;

print $risuto{"やまだ"}; #15
print $risuto{"やまもと"}; #36


if文

条件分岐であるif文の書き方は一般的なプログラミング言語と一緒

…でない時がある。

$banngou = 10;

#【A】
if($banngou == 10){
print "当たり!";
}

#【B】
if($banngou eq 10){
print "当たり!";
}

【A】のコードは色んな言語で見られるが

なんとperlでは【B】の書き方でも【A】と同じ結果を得られる。

比較演算子を文字で書くことが出来る。

現代を生きるプログラマーボーイ達は視覚的に理解できる==!=を使うと思うが

レジェンドである強いプログラマーおじさん達はeqneと書くことがある。

ボーイ・アンド・ガールは狼狽えないように!

また

$banngou = 18;

if($banngou == 18){
print "当たり!";
}else{
print "ハズレ…";
}

のようにif文の条件に当てはまらない場合を書くことが出来る。

…が

$banngou = 24;

if($banngou == 24){
print "当たり!";
}elsif($banngou >= 20){
print "セカンドチャンス";
}else{
print "ハズレ…";
}

のように他のプログラミング言語で使われるelseifeles ifは使えず

elsifと書かなければならない。

決してタイプミスなどと思わないように!


for文

反復構文のfor文は他のプログラミング言語とほぼ同じ。

for(my $cnt = 0;$cnt < 10;$cnt++){

print "カウント".$cnt."\n";
}

変数の初期化の際にmyをつけて変数を宣言するとスコープを制限させることが出来る。

また、反復の現在の処理をスキップするnext

反復そのものの処理を終了するlastが使える。


編集後記

入社11日目。

初めてperl触ったので、忘れないようにメモ書き的な感じで。

なんというか、クセが強すぎる…

特にハッシュ変数とかマジでハマった。

なんで宣言する時は%で、参照する時は$やねん…