use strict; use warnings; use Data::Dumper; use Config::Scoped; my $cs = Config::Scoped->new(); my @lines = ("data{all = [\n", , "]}\n"); my $Config = $cs->parse(text => join('', @lines))->{data}->{all}; print Dumper($Config); __DATA__ { name = john location = uk interests = [ programming cycling ] } # An ignored comment { name = laura interests = [ knitting tennis dancing ] } { location = canada interests = [[ dogs horses ] cars] }