use strict; use warnings; my $str = q{}; sub sort_and_reformat { my $s = shift; return join " ", sort split m/,/, $s; } $str =~ s/"([^"]*)"/'"' . sort_and_reformat($1) . '"'/eg; print $str, $/; #### $str =~ s/(?<=")([^"]*)(?=")/sort_and_reformat($1)/eg; #### $str =~ s/(?<=