use strict;
use warnings;
my $s1 = '5c,5d,5Es';
my $s2 = '5c,5d,5Es';
print parse($s1)."\n";
print parse($s2)."\n";
sub parse {
my $orig = shift;
my ($cit, $idrefs, $values, @values);
$orig =~ m/.*?>(.*)<\//;
$values = $1;
@values = split ',', $values;
$orig =~ m/.*?"(.*)">/;
$cit = $1;
$idrefs .= "$cit$_ " for @values;
chop $idrefs;
$orig =~ s/(.*?=").*(">.*)/$1$idrefs$2/;
@values = map{ s/([a-z]+)/$1<\/it>/i; $_;} @values;
$values = join ',', @values;
$orig =~ s/>.*?'>'.$values.'<'/es;
return $orig;
}