|
Perl 维护了对象的引用信息,在这些引用计数为 0 时会自动销毁对象,当然在程序退出时,所有的对象都将销毁。
Perl 提供了 DESTROY 方法,它允许我们在对象被销毁前利用该即将被销毁的对象做点什么。
自定义一个名为 Employee.pm 的模块,里面代码为:
[code=perl]package Employee;
sub new {
my $class = shift;
$ref = {};
bless ($ref, $class);
return $ref;
}
sub DESTROY {
my $self = shift;
print "Employee $self->{Name} is being destroyed.\n";
}
1;
[/mw_shl_code]
下面脚本使用该模块:
[code=perl]#!/usr/bin/perl
use Employee;
my $emp1 = Employee->new;
#$emp2在代码块中,退出时 my 变量失去作用域,对象也被销毁
#此时会调用DESTROY方法
{
my $emp2 = Employee->new;
$emp2->{"Name"} = "Christian Dobbins";
print "\t\t$emp2->{'Name'}\n";
}
my $emp3 = Employee->new;
$emp1->{"Name"} = "Dan Savage";
$emp3->{"Name"} = "Willie Rogers";
print "Here are our remaining employee:\n";
print "\t\t$emp1->{'Name'}\n";
print "\t\t$emp3->{'Name'}\n";[/mw_shl_code]
运行输出:$ ./des.pl
Christian Dobbins
Employee Christian Dobbins is being destroyed.
Here are our remaining employee:
Dan Savage
Willie Rogers
Employee Dan Savage is being destroyed.
Employee Willie Rogers is being destroyed. |
|