El problema está en que Perl trata a los argumentos como si fueran nombres de archivos que tiene que procesar.
Así, cuando pones '-g' después del nombre del programa, Perl lo intenta abrir como si fuera un archivo, para luego ser procesado línea a línea con el while(<>). Y claro: ese argumento no es un archivo, sino un parámetro de funcionamiento.
Una solución rápida es la de "sacar" el parámetro de la lista de argumentos, es decir, de @ARGV.
Inserta la línea siguiente delante de la 15:
Using perl Syntax Highlighting
shift; # saca el argumento '-g' de @ARGV
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Otra cosa... ¿para qué necesitas usar
threads? No veo nada en el código, que lo requiera.