c:\@Work\Perl\monks>perl -wMstrict -le "use feature 'state'; ;; my $s = '1 {\d1} 2 {\d2} xx{\d3}yy'; print qq{'$s'}; ;; $s =~ s{ \{ \\d (\d+) \} }{ ran_digs($1) }xmsge; print qq{'$s'}; ;; sub ran_digs { state $powers = { map { $_ => 10 ** $_ } 1 .. 7 }; ;; return int rand $powers->{$_[0]}; } " '1 {\d1} 2 {\d2} xx{\d3}yy' '1 7 2 18 xx406yy'