If you had turned on warnings you would have seen the message "Use of uninitialized value in pattern match (m//) at len01.pl line 14.".
I do know that my variables are not _really_ in the symbol table hash, and that might be tripping up things while constructing the compiled regex and then executing it later.