sub parse_array { my @array_buffer = @_; my ($key, %values); foreach my $entry (@array_buffer) { if ($entry =~ /^\s*(.*)\[[0-9]+\]\s*=\s*\(\s*("(.+)"\s*=\>\s*"(.+)")?/ ) { $key = $1; $values{$3} = $4; } elsif ($entry =~ /^\s*"(.+)"\s*=\>\s*"(.+)"([,)]?)?/ ) { $values{$1} = $2; } } return ($key, %values); }