You can't hide a use like that.
if (0) {
print "This block is happening!\n";
use Win32;
}
print "$_\n" for keys %INC;
__DATA__
Exporter.pm
Carp.pm
strict.pm
vars.pm
Config.pm
warnings/register.pm
warnings.pm
DynaLoader.pm
AutoLoader.pm
Win32.pm <------- Perl sees all uses (almost)
And on a system where the module is not available......
[root@devel3 root]# cat test.pl
#!/usr/bin/perl -wT
BEGIN{print "We are on $^O\n"}
if ($^O eq 'MSWin32') {
use Win32::TieRegistry( Delimiter=>"/", ArrayValues=>0 );
# load $config from registry
} else {
# else load $config from flat files
}
[root@devel3 root]# ./test.pl
We are on linux
Can't locate Win32/TieRegistry.pm in @INC (@INC contains: /usr/local/l
+ib/perl5/5.6.2/i686-linux /usr/local/lib/perl5/5.6.2 /usr/local/lib/p
+erl5/site_perl/5.6.2/i686-linux /usr/local/lib/perl5/site_perl/5.6.2
+/usr/local/lib/perl5/site_perl) at ./test.pl line 4.
BEGIN failed--compilation aborted at ./test.pl line 4.
[root@devel3 root]#