in reply to Global symbol requires explicit package..
use strict; generates errors for some features / construct that are judged unsafe. More info on that in strict. And you can look at perldiag for more information on what the error messages mean.
For exemple, the first one means :
(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 "::").
You should declare $lim before using it. With a my $lim, for exemple.
The second one means that since there are no quotes around 'linux', it should (because of strict) be interpreted by Perl as a function and not a string, but there's no function called linux in your code. If you want a string, write "linux".