At 8:58 PM +0200 12/23/07, Shmuel Fomberg wrote:
Hello List.
Please observe the following code:
---- start code
#!/usr/bin/perl -w
use strict;
use threads;
sub thr {
print "Thread running.. Done.\n";
}
sub run_test {
my $x = bless {Name=>"Moshe"}, 'Obj';
threads->create(\&thr)->join();
}
sub Obj::DESTROY {
my $self = shift;
print "Object ", $self, " whose name is ", $self->{Name};
print " Destroyed from thread ", threads->tid, "\n";
}
run_test();
---- end code
On ActiveState Perl 5.8.8 build 822, with threads 1.63, I get the following
output:
Thread running.. Done.
Object Obj=HASH(0x18c42f0) whose name is Moshe Destroyed from thread 1
Object Obj=HASH(0x226f70) whose name is Moshe Destroyed from thread 0
What I conclude from this is that the object is being copied to the new
thread, along with its data, and is destroyed when the thread ends.
Is it bug or feature?
You might want to check my Thread::Bless module on CPAN in this respect.
Liz