my %session_params = ( hostname => $ARGV[0], port => $ARGV[6], version => $ARGV[5] ? "snmpv" . $ARGV[5] : '', timeout => $ARGV[7], ... # and so on for all params }; for ( keys( %session_params ) { delete( $session_params{$_} unless $session_params{$_}; } my ( $session, $error ) = Net::SNMP->session( %session_params ); # Update: # allowed for an empty string for an arg that was being manipulated: $ARGV[5]