$tcl_data =~ s/([^{}\s]+)/'$1',/g; # quote words + comma $tcl_data =~ s/{/[/g; # start list $tcl_data =~ s/}/],/g; # end list + comma #print $tcl_data; my @perl_arr = eval($tcl_data); # interpret as Array of AoAoA... use Data::Dump 'pp'; pp @perl_arr; #### ( [ [ "Register", [ ["CumulativeActive(calls)(In)", 0], ["CumulativeSuccessfullyEstablished(calls)(In)", 0], ["CumulativeSuccessfullyCompleted(calls)(In)", 0], ["CumulativeUnsuccessful(calls)(In)", 0], ], ], ], [ [ ["Make", "Cal", "l"], [ ["CumulativeActive(calls)(In)", 0], ["CumulativeSuccessfullyEstablished(calls)(In)", 0], ["CumulativeSuccessfullyCompleted(calls)(In)", 0], ["CumulativeUnsuccessful(calls)(In)", 0], ], ], ], [ [ "Initiating", [ ["CumulativeActive(calls)(In)", 0], ["CumulativeSuccessfullyEstablished(calls)(In)", 0], ["CumulativeSuccessfullyCompleted(calls)(In)", 0], ["CumulativeUnsuccessful(calls)(In)", 0], ], ], ], [ [ "Summary", [ ["CumulativeActive(calls)(In)", 0], ["CumulativeSuccessfullyEstablished(calls)(In)", 0], ["CumulativeSuccessfullyCompleted(calls)(In)", 0], ["CumulativeUnsuccessful(calls)(In)", 0], ], ], ], )