Ok, I paired it down a little and noticed something different this time. NETWORK::SNMP is a module I use to define OIDs and community strings. NETWORK::Discovery is a package that uses NETWORK::SNMP. I wrote and executed the two different scripts below. Why is it that if I say "use NETWORK::Discovery;" before I say "use NETWORK::SNMP", the variable $commstring is not defined in package main?
nmss_/var/scripts # cat test.pl
#!/usr/bin/perl -w
use NETWORK::SNMP;
use NETWORK::Discovery;
print "$commstring\n";
nmss_/var/scripts # ./test.pl
not_real_community_string
nmss_/var/scripts # cat test2.pl
#!/usr/bin/perl -w
use NETWORK::Discovery;
use NETWORK::SNMP;
print "$commstring\n";
nmss_/var/scripts # ./test2.pl
Name "main::commstring" used only once: possible typo at ./test2.pl li
+ne 6.
Use of uninitialized value in concatenation (.) at ./test2.pl line 6.
|