で、結局。
Moose少ーしだけいじってみた。
重い…orz。
・Person.pm
package Person;
use Moose;
has name => (
is => 'rw',
isa => 'Str'
);
has age => (is => 'rw');
1;
・test.pl
#!/usr/bin/perl -w
use strict;
use Person;
my $objPerson = Person->new();
$objPerson->name('anigon');
print $objPerson->name."\n";
$objPerson->{'name'} = 'ANIGON'; # 例のごとく、外部からメンバ変数の汚染を試みてみた
print $objPerson->name."\n";
exit;
で、test.pl の実行結果。
name が上書きされてますなぁ…。anigon
ANIGON
別にOOPで書く時に楽になるようにしただけで、
中身は特に強化した訳じゃないから、そういうもんなんだなぁ。
それにしても、ものすごく重い…orz
私の使い方が悪いのかなぁ?
一応 DProf したら、こんな事に。
Total Elapsed Time = 1.465469 SecondsUser+System Time = 1.415469 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
17.0 0.241 1.301 19 0.0127 0.0685 Moose::BEGIN
11.1 0.158 0.479 11 0.0144 0.0435 Class::MOP::BEGIN
8.83 0.125 0.115 462 0.0003 0.0002 Class::MOP::Instance::bless_instance_structure
5.44 0.077 0.108 23 0.0033 0.0047 Moose::Util::TypeConstraints::BEGIN
5.16 0.073 0.104 33 0.0022 0.0031 base::import
4.45 0.063 0.063 509 0.0001 0.0001 MRO::Compat::__get_linear_isa_dfs
4.45 0.063 0.161 206 0.0003 0.0008 Class::MOP::Class::add_method
4.17 0.059 0.169 13 0.0045 0.0130 Class::MOP::Class::BEGIN
3.89 0.055 0.172 9 0.0061 0.0191 Moose::Meta::Attribute::BEGIN
3.46 0.049 0.077 7 0.0070 0.0110 Data::OptList::BEGIN
3.46 0.049 0.044 11 0.0044 0.0040 Moose::Meta::Class::BEGIN
2.83 0.040 0.049 3 0.0132 0.0163 Sub::Identify::BEGIN
2.83 0.040 0.015 41 0.0010 0.0004 Class::MOP::Instance::new
2.68 0.038 0.216 6 0.0064 0.0360 Moose::Meta::TypeCoercion::BEGIN
2.68 0.038 0.038 58 0.0007 0.0007 Exporter::import
-t で見てみると 38726行の結果が出てきて、
(つまり 38726回どっかしらの関数が呼ばれてて)
そっかー、そうなのかー…って。。。
before や after は、ほんと簡単に挿入出来ていいんだけどねぇ…。