Just an aside... this seems overly complex:
[qw( . ! / \ - : ; " ' ? $ ^ & @ [ ] = + | < > % * ~ ) , qw/ ( ) /, ',
+', '#'],
why didn't you just write:
[qw( . ! / \ - : ; " ' ? $ ^ & @ [ ] = + | < > % * ~ , # ( ) )],
since qw's can nest for those parens, or even something like:
[map chr, 32..47, 58..63, 123..126]
to really get all of the "other" characters.
-- Randal L. Schwartz, Perl hacker
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.