use warnings; use strict; my $out = substitute('This is a message! {\d3} --- {\d2} --- {\d3}'); print "$out\n"; exit; sub substitute { my $message = shift; $message =~ s/\{\\d(\d+)\}/sprintf "%0${1}d", int(rand(10**$1))/ge; return $message; } __END__ This is a message! 442 --- 86 --- 885