use strict; use warnings; use diagnostics; my $str = "6%var% after"; # $str = "%var% after"; <-- warning is triggered $str =~ s/(\d)?%var%(.*)/$1REPLACED$2/; print "$str\n"