@chunks = split /\), ([A-Z][A-Z])\(/, $input; #### @chunks = split /(?: (?:^|\),\s) ([A-Z][A-Z])\( | \)$)/x, $input; shift @chunks; # remove extra blank element at front #### use List::MoreUtils qw(part); my @chunks = ...; # as above shift @chunks; # as above my $ix = 0; my ($prefixes,$texts) = part {++$ix % 2} @chunks; # or my %text = @chunks; say "Text value AF is $text{AF}";