my $str = 'hello kitty 003x009 spanish'; $str =~ s/^(?:hello kitty )(\d+)(?:x\d+.*)$/sprintf "%d", $1/e; print $str; # result: 3 # expected: 'hello kitty 3x009 spanish' #### $str =~ s/^(?:hello kitty )(\d+)(?:x\d+.*)$/XX/;