use strict;
use warnings FATAL => 'all';
use 5.014;

package MyClient {
    sub new {
        say "MyClient created using pid $$";
        return bless { pid => $$ }, shift;
    }
    sub send {
        say 'sending message with object created under pid ', shift->{pid};
    }
}

use Object::ForkAware;
my $client = Object::ForkAware->new(
    create => sub { MyClient->new(server => 'foo.com', port => '1234') },
);

# do things with object as normal...
$client->send('stuff');

# later, we fork for some reason
if (!fork) {
    # child process

    # look, client was recreated!
    $client->send('stuff');
}

