You should get out of the habit of unnecessarily quoting
variables - it is bad habit. Here are a couple of
corrections:
my %snmp_options = (
hostname => $args->{h},
retries => $retries,
# etc
);
# and
$snmp_options{username} = $snmp_username;
Sure, using quotes works for those examples, but it is
unnecessary and will one day lead to something like:
package My::CGI;
use strict;
use CGI;
sub new {
my $class = shift;
my $foo = 'bar';
my $q = CGI->new();
my $self = {
foo => "$foo",
cgi => "$q",
};
return bless $self, $class;
}
package main;
use strict;
my $q = My::CGI->new();
print $q->{foo}, "\n";
print $q->{cgi}->a({href=>'http://foo.bar'},'some link'),"\n";
__END__
yields:
bar
Can't locate object method "a" via package "CGI=HASH(0x80f8a20)"
at ./foo.pl line 26.
Whoops! What happened? You literalized a reference. Try
this code out, then go back and remove the unnecessary
quotes inside the $self hash ref.
jeffa
L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)