package Test123; use strict; use warnings; use IPC::ShareLite; use Storable qw/ freeze thaw /; use Data::Dumper; use feature 'say'; sub new { my ($class,$key) = @_; my $shared=undef; eval { $shared=IPC::ShareLite->new( -key => $key, -create => 'no', -destroy => 'no' ); say Dumper @{thaw($shared->fetch)}; say "old"; }; unless($shared){ $shared=IPC::ShareLite->new( -key => $key, -create => 'yes', -destroy => 'no' ); my @d; push @d,{ stuff => 'aaaaa', } for 0..1; $shared->store(freeze(\@d)); say "new"; }; say $shared->key(); return bless { blah => $$, shared=> $shared },$class; } sub DESTROY { my ($self)=@_; say $self->{shared}; my @data= @{ thaw( $self->{shared}->fetch ) }; #say Dumper \@data; say "DESTROYED"; } package main; use feature 'say'; use strict; use warnings; my @a; use constant KEY_ID =>6119; sub f { my $b = Test123->new(KEY_ID); push @a, Test123->new(KEY_ID) for 0..3; }; f();