in reply to Re: another question on a string of 20 letters
in thread another question on a string of 20 letters

More concisely,
if (q{a} x 20 . q{!} =~ m/^\w{6,20}$/)
means
if ((q{a} x 20) . (q{!} =~ m/^\w{6,20}$/))
(which is always true) and not
if (((q{a} x 20) . q{!}) =~ m/^\w{6,20}$/)
due to operator precedence.