- 208 名前:2/2 mailto:sage [2009/03/03(火) 17:18:54 ]
- package main ; #=== 実行 ===
use Data::Dumper ; use Hoge; use Hoge2; my $obj = Hoge->new('hoge') ; print Dumper $obj ; # ほら丸見えだし、 $obj->setter('fuga') ; # 折角セッタでセットしても $obj->{data} = 'bar' ; # カプセル化出来てねえよ。 print $obj->getter . qq{\n} ; # ほらね、変えられちゃった my $obj2 = Hoge2->new('hoge') ; print Dumper $obj2 ; # bless先がdo{ }で弄り様もねえしなあ。 printf "%s\n", $obj2->getter; $obj2->setter('fuga') ; # 専用のセッタを用いて漸く変更可能。 printf "%s\n", $obj2->getter; #Hoge2を以下の様に書いてるサイト(有名所)もあるが、大ポカだから注意! #package Hoge2; #my %hash ; #sub new { my $obj = bless \do{''}, shift ; $hash{ $obj } = shift ; $obj ;} #sub getter { $hash{ shift } ; } #sub setter { $hash{ shift } = pop ; return ; } #sub DESTROY { delete $hash{ shift } ; } #1; 長文失礼
|

|