Hi, not really an answer to your question about globals, but:
"So I want a logger object, and only one logger object though it may be used in various packages ... Controls both logging to a file and to the screen ... you can set a verbosity for each independently
Unless you are doing this a learning exercise, why not use Log::Any and the Log::Any::Adapter::Dispatch output adapter which allows you to do exactly what you specified, out of the box?
Hope this helps!
The way forward always starts with a minimal test.