I have currently a DNS Reverse lookup script which works however there is a small little issue of the script being able to output the DNS system errors.

The problems goes like this:

1. User keys in false/wrong internet address name etc. "www.whyisthednsnothappening.com"
2. The script would then clear the screen using system(clear)
3. The script would then print "can't resolve DNS. The error is due to: *various System error*"
4. The script re directs the user back to the same menu/script to type in the name address again.

So the main problem is now step 3 which the script only shows me "Can't resolve DNS. The error is due to: *BLANK* " Which *BLANK* is suppose to show errors like "Bad arg length for Socket::inet\_ntoa, length is 0, should be 4 at ./showdns.pl line 28, <> line 1." and the menu of the DNS script is located below of the error print.

The Codes:

```
#!/usr/bin/perl

use IO::Socket;
use warnings;
use strict;
use Term::ANSIColor;
use Socket;
use Sys::Hostname;

print "\nYou are now in Show DNS IP Address!\n\n";

print "*************\n";
print "|DNS Address|\n";
print "*************\n";

print "\nPlease enter a hostname that you wish to view\n\n";
print "\n\nEnter the hostname of Choice Here: ";
my $userchoice =  <>;
chomp ($userchoice);

my $hostname = $userchoice;

my $i_addr = scalar(gethostbyname($hostname || 'localhost'));
if ( ! defined $i_addr ) {
my $err = $!;
my $herr = int herror(const char *s);
system('clear');
print("Can't resolve $hostname: $herr, try again");
exec("/root/Desktop/showdns.pl");
exit();
}

my $name = inet_ntoa($i_addr);
my $coloredText = colored($name, 'bold underline blue');
print "\n\nThe hostname IP address is: $coloredText\n\n";

print "Press enter to go back to the main menu\n\n";
my $userinput2 =  <>;
chomp ($userinput2);

system("clear");
system("/root/Desktop/simpleip.pl");

```

Can someone please give advice on the codes? Thanks!