Listing for whois.pl

#!/usr/bin/perl -T -w
# Whois protocol client

use strict;

$| = 1;      # Autoflush output

my $uri_data = $ENV{'URI_DATA'};

print "content-type: text/html\n";
print "\n";

print "<html>\n";
print "<body>\n";

if (!$uri_data) {

	print "URI syntax: <b>whois:name</b>\n";

} else {
        if ($uri_data =~ /^([-\@\w.]+)$/) {
            $uri_data = $1;                                # data now untainted

            $ENV{'PATH'} = "/bin:/usr/bin:/usr/local/bin"; # safe path

            my $whois_output = `whois $uri_data`;     # execute whois command

            if ($whois_output =~ /detailed information\.\n\n(.+)\n\nTosingle/s) {
                my @names = split(/\n/, $1);

                print "<b>Multiple matches were found.<br>\n";
                print "Please click on one of the following:<b>\n";

                print "<ul>\n";

                my $name;
                foreach $name (@names) {
                    print "<li><a href='whois:$name'>whois:$name</a>\n"
                }
                print "</ul>\n"

            } elsif ($whois_output =~ /detailed information\.\n\n(.+)\n>>> Last/s) {
                my $data = $1;
		$data =~ s/\n/<br>\n/sg;
                print $data;
            }

        } else {
            print "<b>Invalid characters in URI data:</b> $uri_data\n";
        }

    }

    print "</body>\n";
    print "</html>\n";