sub writeToDB { say "start to writeToDB"; my $dbName = shift || "LMT.db"; my $pName = shift; my $date= shift; my $hashRef= shift; my $db = DBM::Deep->new( file=> $dbName, num_txns=> 10, ); eval { $db->begin_work; foreach ( keys %$hashRef) { push @{$db->{$pName}->{$date}->{$_}},$hashRef->{$_}; } $db->commit; }; if(defined $@ and length $@) { say $@; $db->rollback; } }