in reply to Dynamic Memory allocation

$g_User{'user1'} = \@l_UserDetails;

To answer your question:

$g_User{'user1'} = [@l_UserDetails];

But then chances are you may avoid @l_UserDetails altogether, if the code that fills it is simple enough, that is.