in reply to Note on usage of ours variables and a question

Here is a replacement for your module and script showing one way of achieving this.

use strict; use warnings; package Example; use parent 'Exporter'; our ($VERSION, @EXPORT, $debug); $VERSION = '1.0'; @EXPORT = qw($debug); $debug = 1; 1;
#!/usr/bin/env perl use strict; use warnings; use lib '.'; use Example; print "debug = $debug\n";

I've removed a lot of your boilerplate for clarity. I've also adhered to convention and capitalised the module name. Note that filling @EXPORT is generally frowned upon. Much better to use @EXPORT_OK and allow the script to decide which symbols to import.

BTW does Perl have a system variable "debug" that is global and does not need qualification with the package name?

No, but it does have the warnings pragma and $^W which you might consider similar. I'd stick with your own flags unless you have a good reason to do otherwise, though.