use strict; use warnings; use JSON; use Data::Dumper; my $js = <<'JSON'; {"contactsData":[{"m_UID":"963","m_display_name":"Lynne","m_emailList":[{"m_emailID":"jhs@email.com","m_emailLabel":"","m_emailType":"2"}],"m_eventList":[{"m_startDate":"1991-10-25","m_eventLabel":"","m_etype":"1"}],"m_firstName":"Lynne","m_imList":[{"m_CustomProtocol":"test","m_CustomType":"","m_imAddress":"Lynne","m_imProtocol":"-1","m_imType":"3"}],"m_isStarred":"1","m_lastName":"ROWLAND","m_middleName":"Lynne","m_namePrefix":"","m_nameSuffix":"","m_nickname":"Lynne","m_note":"","m_organizationList":[{"m_JobDepartment":"","m_JobDescription":"","m_OfficeLocation":"Ruzhou","m_OfficePhoneticName":"","m_OfficeSymbol":"","m_TypeLabel":"test","m_organizationName":"Rio Tinto Group","m_title":"","m_type":"0"}],"m_phoneNumberList":[{"m_label":"","m_number":"9841003417","m_type":"21"}],"m_phonetic_fname":"Lynne","m_phonetic_lname":"Lynne","m_phonetic_mname":"Lynne","m_photoBitmap":"","m_postalAddresses":[{"m_address":"787-4199 Orci Avenue","m_label":"","m_region":"West Africa","m_city":"Ruzhou","m_country":"Guinea-bissau","m_neighbourhood":"","m_PoBox":"251861","m_street":"","m_zipcode":"444610","m_type":"1"}],"m_source":"Google","m_vPredefinedTags":"1","websiteList":[{"m_website":"","m_websiteLabel":"","m_websiteType":"3"}],"relationship":[{"m_relationLabel":"","m_relationName":"ROWLAND","m_relationType":"6"}],"socialList":[{"m_Type":"0","m_ProfileName":"ROWLAND","m_CustomProfileName":"test"}],"contactMatching":"true"} ]} JSON my $perl = from_json $js; print Dumper $perl; #### $VAR1 = { 'contactsData' => [ { 'm_note' => '', 'm_display_name' => 'Lynne', 'relationship' => [ { 'm_relationName' => 'ROWLAND', 'm_relationType' => '6', 'm_relationLabel' => '' } ], 'm_UID' => '963', 'm_lastName' => 'ROWLAND', etc... #### my $perl; $perl->{contactsData}->[0]->{m_note} = ''; $perl->{contactsData}->[0]->{m_display_name} = 'Lynne'; $perl->{contactsData}->[0]->{relationship}->[0]->{m_relationName} = 'ROWLAND'; ...etc