my @menu = ( { -label => 'File', -submenu => [ { -label => 'Exit ^Q', -value => '\&exit_dialog' }, { -label => 'Wait ^W', -value => '\&remain_dialog' }, ], }, ); use JSON; print encode_json({menu=>\@menu}); __END__ { "menu" : [ { "-label" : "File", "-submenu" : [ { "-label" : "Exit ^Q", "-value" : "\\&exit_dialog" }, { "-label" : "Wait ^W", "-value" : "\\&remain_dialog" } ] } ] }