I don't have an answer to "why", but I do have a simpler test case $ touch foo001 $ perl -de 1 ... DB<1> p <foo{[0-9]*}> foo001 DB<2> p <foo{*[0-9]}> DB<3> q $ perl -v This is perl, v5.8.8 built for amd64-freebsd (with 1 registered patch, see perl -V for more detail)