use strict; use warnings; use Data::Dumper; my $i = "[[{bunches_of_data}, {more_data}, {etc}], [{hey_more_data}, {etc}, {etc}], [{etc}, {etc}, {etc}]]"; $i =~ s/{|}//g; $i =~ s/([^\[\],\s]+)/'$1'/g; my $iv = eval "$i"; print Dumper $iv; #### $VAR1 = [ [ 'bunches_of_data', 'more_data', 'etc' ], [ 'hey_more_data', 'etc', 'etc' ], [ 'etc', 'etc', 'etc' ] ];