masatoの日記

やっていきます

Perl サブルーチンのレファレンスをつくる

テーマ

サブルーチンをレファレンス化して実行してみる。

「わかりやすい Perlオブジェクト指向」第5章より。

サンプルコード

my $codeRef = \&daikeiNoMenseki;
my $menseki = $codeRef->(200,40,500);
print "Area measurement: $menseki\n";

sub daikeiNoMenseki {
    my ($joutei, $katei, $takasa) = @_;

    if ($joutei < 0 || $katei < 0 || $takasa < 0 ) {
        warn "argument must be greater than 0!\n";
        return -1;
    }

    my $menseki = ($joutei + $katei) * $takasa / 2;
    return $menseki;
}

ポイント

  1. 配列レファレンスやハッシュレファレンスと同様に\を付けることでレファレンスがつくれる。

&daikeiNoMenseki\&daikeiNoMensekiとする。

2.サブルーチンレファレンスでも矢印記法でデリファレンスできる。

$codeRef->(200,40,500)