http://qs321.pair.com?node_id=1062998


in reply to How can I suppress 'uninitialized' warnings in a CPAN module?

Why does the "no warnings 'uninitialized';" not work?
"use warnings" and "no warnings" are lexical, which means that you can't change them in modules you use. I'd remove "use warnings;" from Tokenizer.pm, or add
BEGIN { $INC{"warnings.pm"}="blah" }
to the beginning of your program.

EDIT: To explain, %INC is a hash table where Perl keeps track of what modules it has already loaded. The above line tells Perl "yeah, yeah, I've already loaded "warnings.pm". "warnings.pm" does its work in warnings::import(), called when some code does "use warnings," but since you've told it that "warnings.pm" has already been read, and warnings::import() is undefined, Perl won't call it, and hence won't create the annoyance.

Replies are listed 'Best First'.
Re^2: How can I suppress 'uninitialized' warnings in a CPAN module?
by Anonymous Monk on Nov 18, 2013 at 00:03 UTC