use IO::Socket::Inet; for ( ['Mail Servers', 'mail.test.com:110', 'mail.test.com:25'], ['Web Servers', 'test.com:80'], ['DNS Servers', 'test.com:53'], ) { my ($message, @ports) = @$_; my $good = 1; for (@ports) { $good = 0, last unless IO::Socket::INET->new($port); } print "$message: ", $good ? "Up" : "Down"; print "\n"; }