I think you would be better served by using the xml output of nmap and parsing that with a module like XML::Twig instead of parsing your own. Looks like we are past that design decision though so moving on...
In the section for my $node(@list) {... You assign at most one element into the arrays @telnet_queue and @ssh_queue. There is no use in looping over an array of one or zero elements. That could be rewritten.
if ($telnet_status =~ /open/) {
logall("Trying $ip_addresss");
audit_hardware_using_telnet($ip_address);
}
You can also chomp at the same time that you read a filehandle, for example:
chomp(my @list = <$fh>);