in reply to Confusing regex match.

Works for me.
$ perl -E'say "pl" =~ /p.{1,6}/' 1 $ perl -E'say "pl" =~ /p.{2,6}/' $ perl -Mre=debugcolor -E'say "pl" =~ /p.{1,6}/' Compiling REx "p.{1,6}" Final program: 1: EXACT <p> (3) 3: CURLY {1,6} (6) 5: REG_ANY (0) 6: END (0) anchored "p" at 0 (checking anchored) minlen 2 Guessing start of match in sv for REx "p.{1,6}" against "pl" Found anchored substr "p" at offset 0... Guessed: match at offset 0 Matching REx "p.{1,6}" against "pl" 0 <pl>| 1:EXACT <p>(3) 1 <pl>| 3:CURLY {1,6}(6) REG_ANY can match 1 times out of 6.. +. 2 <pl>| 6: END(0) Match successful! 1 Freeing REx: "p.{1,6}" $ perl -Mre=debugcolor -E'say "pl" =~ /p.{2,6}/' Compiling REx "p.{2,6}" Final program: 1: EXACT <p> (3) 3: CURLY {2,6} (6) 5: REG_ANY (0) 6: END (0) anchored "p" at 0 (checking anchored) minlen 3 Freeing REx: "p.{2,6}"
Perhaps you have additional characters in your input? Try Devel::Peek::Dump or uniquote to make them visible.