@Konboi memo

主に技術に関してつらつらと。

リファレンス

卒業論文も一段落したので、入社後に使うであろうperlを勉強し始めました。

perlは大学の授業でちょろっと触れた後に、入社する会社のインターンでお勉強させてもらった時に
がっつり触って以来、正直全然勉強していない。

インターンの時に勉強用に貸していただいた本が偶然にも大学の図書館においてあったので。
それを読みながら勉強してみようと思います。

この本のいいところはリファレンス(C言語でいうところのポインタ)が丁寧に書いてあるのがいいらしい。
(2章~5章までリファレンスについて)

今日は1章から5章まで読んで、コードを写経してました。

1章

1章は Find::File というモジュールを実際に使ってみようという章。

サンプルコードを一部実行してみた。

2章

ここからリファレンスについて
2章は変数のリファレンスについて

$age = 15;
$refAge = \$age; #リファレンス

$hoge = $$refAge; #デリファレンス

++$$refAge;

# $age == 15
# $hoge == 14
#$$refAge == 15
# $refAge == (0xxxxxxx)

なるほどって思ったフレーズ

変数は領域をもち
領域は番地を持つ

スカラーデータ→リファレンス→デリファレンス→スカラーデータ

3章

3章は配列のリファレンスについて

@month = (undef, "January", "Feburary");
$refMonth = \@month;

#@$refMonth[0] == undef
#@$refMonth[1] == "January"

perlで関数の配列の使い方が特殊だったので

my @month = ("jan","feb");
my @days = (31, 28);

&list(@month , @days);
sub list {
 my(@month, @days) = @_;
}

この様な形の引数に配列を2つもつ関数が仮にあったとする
このとき 関数の @_ には @monthと@days が連結してはいるから
関数で配列を渡すときはハッシュを使う必要ある。

4章

ハッシュのリファレンスについて

ハッシュとは

%hoge = (

  foo => 1,
  fooo => 2,
)

キーと値がセットの変数

$refHoge = \%hoge;
%$hoge;

5章

関数のリファレンスと無名関数について

$refSub = \&kansu;

&$refSub();


こんな感じで2章から5章まではリファレンスについてだった。
配列とハッシュのリファレンスはつかうのかなーと思ったけど、

関数のリファレンスはどういう時に使うんだろうとまだ疑問が...

やっぱり実際に使ってみないとっていうのはあるかな...

明日はもう1回5章の関数のリファレンス読んでから先に進む予定。


あと、Perlでの開発を同時に勉強するのに

Ark Advent Calendar 2011
を並行してやってみようと思います。

はい。