请高手详解一下创建对象的方法

请高手详解一下创建对象的方法

请高手详解一下创建对象的方法
1.请大家帮忙介绍一下bless函数生成对象的用法,举个例子



2.想问一下为什么要用引用?什么情况下用比较好? [CCB]10[/CCB]
简化版--[code]--pack.
简化版
[code]
package Mod;
sub new { shift; bless };
sub foo { shift; print 'i am mod, sub foo';};
1;
[/code]
完整版
[code]
package Mod;
sub new
{
my $this = shift;
my $self = { @_ };
bless $self, $this;
return $self;
};
sub foo
{
my $self = shift;
print 'i am mod, sub foo';
};
1;
[/code]




   

不太完整版
[color=008000]
package Mod;

sub foo{
print 'i am mod, sub foo';
}
1;

package main;

my $mod = bless([],'Mod');
$mod->foo();
[/color]
------------------------------------------

一定要注意, bless只是生成一个对象的引用(构造)而已, 第一个参数是一个引用: 可以是数组引用, 散列引用, 标量引用, 甚至是另外一个对象; 第二个参数是包名, 就是要被构造的包名(缺省为当前包)。bless不一定在包内, 也和new()不相干――只是迎合C++的习惯,“看起来象”而已。