sub lower{ my $letter = shift; return lc($letter); } s{...snip...}{ $1 (?{ lower( $2 ) } ) }gxe;