$programSource =~ s/in \( (' <-- outer group start goes in $1 ([^']*) <-- inner group chars between '' '[,])* <-- followed by optional comma, close outer group and repeat outer group for any number of repetitions \)/=~ m#[$2$3$4$5$6$7$8$9]#;/g; <-- put inner groups in match (up to 8 of them, anyway)