$VAR1 = bless({'options' => {'filehandle' => bless( \*Symbol::GEN2, 'FileHandle' ), 'filename' => 'a.log'},}, 'Log' ); #### $self->do_task() #### Process::spawn(\&do_task, $self); #### $new_log = new Log(filename => 'new.log'); $cur_log = $self->{log}; $self->{log} = $new_log; Process::spawn(\&do_task, $self); # This runs in background. $self->{log} = $cur_log; # Restore. #### $self->{system}->{log}, $self->{filecache}->{system}->{log} #### @ref = Devel::ObjSearch($self, sub { return UNIVERSAL::isa($_[0], 'Log'); }); foreach (@ref) { $_->filename('new.log'); $_->filehandle($new_log); } .. spawn() ..