Global symbol "$dumpoff" requires explicit package name at ./vcd2net.pl line 8. Global symbol "$end" requires explicit package name at ./vcd2net.pl line 8. Global symbol "$dumpon" requires explicit package name at ./vcd2net.pl line 8. Global symbol "$end" requires explicit package name at ./vcd2net.pl line 8. Global symbol "$i" requires explicit package name at ./vcd2net.pl line 21. Bareword "sample" not allowed while "strict subs" in use at ./vcd2net.pl line 7. Bareword "vcd" not allowed while "strict subs" in use at ./vcd2net.pl line 7. Execution of ./vcd2net.pl aborted due to compilation errors (#1) (F) You've said "use strict" or "use strict vars", which indicates that all variables must either be lexically scoped (using "my" or "state"), declared beforehand using "our", or explicitly qualified to say which package the global variable is in (using "::").