メンバー関数の書き方
メンバー関数を隠ぺいするには、関数をmyで定義します。
my $calc3 = sub{}
といった感じで。
これを呼ぶときは
$self->$calc3()
とします。calc3()の前に$が付いていることに注意してください。
$self->calc3()
ではありません。
ファイル名:Human.pm
package Human;
###########
sub new
{
my $class = shift;
return bless {}, $class;
}
###############
my $calc3 = sub
{
my ($self,$x,$y) = @_ ;
my $c = $x * $y ;
return $c;
};
#############
sub calc4
{
my ($self, $j,$k) = @_ ;
my $h = $self->$calc3($j,$k); # ->の後ろに$をつける
print “Human->calc4 = $h”;
}
##############
1;
実行ファイル名:test1.pl
実行ファイルの内容:
use Human;
my $man = Human->new();
$man->calc4(4,2 );
実行結果 1
>perl test1.pl
Human->calc4 = 8
calc4()の中でcalc3()が呼び出されています。
実行結果2
次に、
実行ファイル名:test2.pl
>perl -c test2.pl
Can’t locate object method “” via package “Human” at test2.pl line 7.
$man->$calc3()は直接実行できませんでした。
$man->calc3()でも実行できません。
実行結果3
次に、
>perl -c test2.pl
test2.pl syntax OK
文法チェックは通ってしまいます。
ので注意です。