in reply to Parental Variables

You leave out showing the actual problem you are having ("everything crashes"). What do you mean by "using syscall"?

Depending on your coding style, you may find it necessary to put the require in a BEGIN{} block, or use use instead. Without this, the subs will not be defined until run-time, and the parser will have a harder time deciding what's a function call and what's a bareword or indirect object. Example:

$ perl -we'require Data::Dumper; print Dumper $^O' Name "main::Dumper" used only once: possible typo at -e line 1. print() on unopened filehandle Dumper at -e line 1.
vs.
$ perl -we'use Data::Dumper; print Dumper $^O' $VAR1 = 'cygwin';
There are many other gotchas like this unless you always make it clear what's a function call &like("this").

(Without the ampersand but with parentheses will address most of the problem cases; I can't remember the exception(s).)