Perlのサブルーチン
Perlのリファレンス渡しについてです。
Perl入学式2013の第4回資料の一部を元に考えました。
https://github.com/perl-entrance-org/workshop-2013-04/blob/master/slide.md
例題として、ベクトルの内積を求めるサブルーチンを考えます。
ポイントは、サブルーチンに配列を渡すとき、
- 配列をそのまま引数で渡すと、中身が展開されてしまう。
- 展開されないようにするために、リファレンスで渡す。
のように理解しました。
まあ、合っているかどうかわかりませんが・・・。
Perl入学式の第4回では、ここら辺を確認したいと思います。
use strict; use warnings; my @a = qw/ 1 2 /; my @b = qw/ 2 3 /; # 内積 sub dot { my ($v1, $v2) = @_; my $result = 0 ; # ベクトルの次元は2 for my $i (0..1) { $result += @$v1[$i]*@$v2[$i]; } return $result; } # 各配列を区別したい場合はリファレンス渡しにする my $out = dot(\@a, \@b); print "$out"."\n";