use strict; sub make_regex_list{ my @regexes; foreach my $strings (@_) { my($regex_string,$options)=@$strings; push @regexes,qr/(?$options)$regex_string/; } return @regexes; } my $string = "Jack Jack John"; # in real code this array would be constructed # from a file my @reStrings=(["jack","ig"],["john","i"]); my @REGEXES=make_regex_list(@reStrings); foreach my $regex (@REGEXES) { $string=~s/$regex/name/; } print $string."\n"; #### "name Jack name"